Io purtroppo non me ne intendo molto di Ajax però quando l'ho usato all'inizio non mi andava perchè c'erano problemi di tempi nella risposta, di chiamate sincrone e asincrone. Se vuoi ti posto il codice che uso io per inviare dati in POST con ajax così puoi confrontarlo, poi qualcun'altro più competente ti potrà dire dove sbagli e spiegarti meglio come funziona.
Ecco il codice del file js che includo io:
per inviare i dati e ottenere la risposta assegni a un evento di un oggetto nella pagina con il form:codice:var ajax = assegnaXMLHttpRequest(); // // funzione per assegnare l'oggetto XMLHttpRequest compatibile con i browsers più recenti e diffusi // function assegnaXMLHttpRequest() { // lista delle variabili locali var // variabile di ritorno, nulla di default XHR = null, // informazioni sul nome del browser browserUtente = navigator.userAgent.toUpperCase(); // browser standard con supporto nativo // non importa il tipo di browser if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") XHR = new XMLHttpRequest(); // browser Internet Explorer // è necessario filtrare la versione 4 else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0 ) { // la versione 6 di IE ha un nome differente // per il tipo di oggetto ActiveX if(browserUtente.indexOf("MSIE 5") < 0) XHR = new ActiveXObject("Msxml2.XMLHTTP"); // le versioni 5 e 5.5 invece sfruttano lo stesso nome else XHR = new ActiveXObject("Microsoft.XMLHTTP"); } return XHR; } // // funzione per inviare dati col metodo post ad un'altra pagina // function inviaPOST(pagina, dati, callback) { if (ajax) { // inizializzo la richiesta in post ajax.open("post", pagina, true); // imposto il giusto header ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded"); ajax.setRequestHeader("connection", "close") // effettuo la richiesta inviando i dati formati da coppie chiave-valore // dati = escape(dati); ajax.send(dati); ajax.onreadystatechange = function() { if(ajax.readyState === 4) if(ajax.status == 200) return callback(ajax.responseText); else{ //alert("Operazione fallita, errore numero " + ajax.status); return null; } } } }
codice:inviaPOST('pagina_che_esegue_il_controllo.php', 'variabile_a=valore_a', function(risposta){ // se l'invio ha funzionato if (risposta) { // qui scrivi il codice che controlla la risposta } else // se l'invio non ha funzionato return true; });

Rispondi quotando