Uso Ajax in maniera molto grezza.
Istanzio l'oggetto XMLHttpRequest con una funzione del tipo
codice:
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;
}
e gestisco la risposta in maniera altrettanto grezza
codice:
function handleResponse(req, XMLHandler){
return function(){
if(req.readyState == 4){
if (req.status == 200){
XMLHandler(req.responseText);
}else{
alert("Errore HTTP: " + req.status);
}
}
}
}
Su un OnClick mi tocca chiamare due funzioni che dialogano con due script PHP molto semplici.
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
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;
}
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.
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?