Uso Ajax in maniera molto grezza.
Istanzio l'oggetto XMLHttpRequest con una funzione del tipo
e gestisco la risposta in maniera altrettanto grezzacodice:function newXMLHttpRequest(){ if(typeof XMLHttpRequest != 'undefined'){ return new XMLHttpRequest(); } try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Il tuo browser non è abilitato al corretto uso del sito"); } } return false; }
Su un OnClick mi tocca chiamare due funzioni che dialogano con due script PHP molto semplici.codice:function handleResponse(req, XMLHandler){ return function(){ if(req.readyState == 4){ if (req.status == 200){ XMLHandler(req.responseText); }else{ alert("Errore HTTP: " + req.status); } } } }
Quello che fanno è una query secca che ritorna un numero.
Ognuna di queste due funzioni deve aggiornare un campo col solito innerHTML.
Un esempio di funzione è questo
Accede però che a volte il secondo script non viene eseguito o forse la risposta non viene gestita, insomma il secondo campo che dovrebbe aggiornarsi non si aggiorna.codice:function updateNeutri(infID,cittaID){ //Creo un nuovo oggetto XMLHTTPRequest var req = newXMLHttpRequest(); //Invio la richiesta req.open("POST", "./influenze_neutri.php?infID="+infID+"&cittaID="+cittaID, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //Invio i dati POST req.send(); //Gestore dell'evoluzione dello stato dell'oggetto req req.onreadystatechange = handleResponseComplex(req, updateValoreNeutri, infID); } function updateValoreNeutri(result,suffix){ document.getElementById('valore_neutro_' + suffix).innerHTML = result; }
Le due funzioni sono chiamate entrambe sull'onClick, separate da ;
Come posso avere la certezza che, a meno di problemi di rete, anche la seconda funzione faccia il suo sporco lavoro?

Rispondi quotando
