Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121

    jQuery $.post funziona "a metà"

    Salve a tutti!
    Ho questo form

    codice:
     <form method="post" name="ins_news" id="ins_news">
    			<label>Titolo:</label><input type="text" maxlength="40" id="titolo" name="titolo" size="50" /> 
    
    
                <label>Corpo del messaggio:</label>
    
        		<textarea id="areapress" name="areapress" rows="10" cols="50" style="width: 100%"></textarea>				
    	        <input type="submit" id="invio" value="Invia"  />
            </form>
    e questa richiesta javascript via jQuery:

    codice:
    $(document).ready(function() {
    $("#ins_news").submit(function(){	
    	testo = xinha_editors.areapress.getEditorContent();
    	testo = testo.replace(/\s| |<\/?p>|<\/p>|<br \/>/, "");
    	testo = $.trim(testo);
    	titolo = ins_news.titolo.value;
    	if(testo == "" || titolo.length == 0)
    	{
    		alert("Bisogna inserire titolo e corpo del messaggio!");
    		return false;
    	} else 
    	{
    		var dataString = 'titolo='+ titolo + '&areapress=' + testo;
    		$.post("ins_news.php", dataString, function(data) { 
    			if(data=="conferma") alert("OK");   ///<- QUI SECONDO ME STA IL PROBLEMA
    		}, "html");
    	}
    //	return true;
    });
    });
    e per finire questo codice php (che sarebbe ins_news):

    codice:
    
    $titolo = mysql_escape_string($_POST['titolo']);
    $testo = mysql_escape_string($_POST['areapress']);
    $dataora = (date("y-m-d"));
    mysql_select_db("smoc_db");
    if (mysql_query("INSERT INTO press(testo, titolo, dataora) VALUES ('$testo', '$titolo', '$dataora')") or die(mysql_error())) {
    $result = "conferma";	
    $conn->disconnetti();
    } else 
    {
    	$result = "errore";
    	$conn->disconnetti();
    }
    echo $result;
    Le connessioni al db funzionano perfettamente... infatti, effettivamente il contenuto di titolo e di testo viene inserito nel db. Quello che però non riesco a fare, è fornire una risposta.
    Mi spiego.
    Se guardate il codice che ho postato, nella richiesta $.post faccio un controllo in caso di "success". Solo che a me non sembra proprio entrare in "success", infatti non mostra alcun alert. Però nel db viene inserito tutto, per cui non è un problema di php. Come posso fare? Con ajax puro ci sarebbe la responseRequest, ma con jQuery.post?

    Grazie a tutti!
    Spero di essere stato chiaro!

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, curiosita'..
    Come fai a vedere un alert se la form esegue un submit e ricarica la pagina?

    Intendo dire che la form dal codice che vedo non ha nessun blocco ossia se invii col submit eseue il submit ma allo stesso tempo ricarica la pagina(o sbaglio?)

    Non dovresti gestire il submit da javascript?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    E infatti non si può fare.

    Vabbè, poco male... ho risolto inviando un alert prima del submit.
    Grazie!

  4. #4
    @m4rko80

    se il submit viene effettuato in ajax non si può evitare refresh della pagina mettendo un return false al binding del submit del form

    @atsap

    hai provato a fare l'alert o meglio ancora il console debug (se usi firebug) della variabile date per vedere che cosa conteneva?
    Ubuntu rulez!! :P

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Simotenax, ci ho provato, e in effetti conteneva ciò che desideravo... però evidentemente non puoi fare una richiesta asincrona con il metodo submit... bisognerebbe gestire tutto via AJAX... che non è complicato, ma di usare plugin o scrivere XHR a mano... considera che sto usando xinha editor, ed è una pena incredibile... cioè, funziona bene, ma genera codice casuale in un modo incredibile.

  6. #6
    guarda per certo posso dirti che con jQuery.post vengono mandate richieste asincrone

    il fatto che poi faccia il refresh della pagina è perchè alla fine della callback di dubmit() devi metterci un return false;

    comunque nell if

    if(data=="conferma")

    se una volta fatto l'alert di data ti dava proprio "conferma" mi viene solo da pensare che ci siano degli spazi bianchi nel valore di ritorno dell'ajax.
    Ubuntu rulez!! :P

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Spazi bianchi? E da dove li prende? Cioè, a rigor di logica, se php "spara" 'errore' o 'conferma'... non saprei. Comunque sto avendo un sacco di rogne... ho pure provato TinyMCE ma si "mangia" caratteri... è stranissimo...

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Per dirti: adesso con tinymce pare funzionare, ma mi "strippa" tutto il testo dopo i caratteri accentati. Può essere a causa della funzione $.post?

  9. #9
    per toglierti ogni dubbio dovresti controllare che valore viene passato come parametro, io comunque ti consiglio di passare un json piuttosto che una stringa come parametro, ad esempio.


    Codice PHP:
    var dataString = {"titolo"titolo"areapress"testo}; 
    Ubuntu rulez!! :P

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Proverò, intanto grazie

    In realtà, ho fatto questa prova. Eliminando il controllo ajax, ho scoperto che php riceve effettivamente tutto quello che deve ricevere, correttamente. Se aggiungo ajax, il testo di ritorno è quello troncato invece. Per cui credo proprio che il problema sia quello lì!
    Intanto provo json

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.