Ciao a tutti!
ho un problema con l'esecuzione di una, o meglio, di tre funzioni ajax:
codice:
var xmlhttp;
function startFunc(){
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function testo(campo,value){
var result;
if(campo=="pdv"){
//**********commento pdv**********
var tab="giro_visita";
var cod="cod_pdv";
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
result=xmlhttp.responseText;
document.getElementById("pdv_text").innerHTML=result;
}
}
xmlhttp.open("POST","queryTesto.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("tab="+tab+"&cod="+cod+"&val="+value);
}else if(campo=="attivita"){
//**********commento attivita**********
var tab="pdv_attivita";
var cod="codatt";
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
result=xmlhttp.responseText;
document.getElementById("attivita_text").innerHTML=result;
}
}
xmlhttp.open("POST","queryTesto.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("tab="+tab+"&cod="+cod+"&val="+value);
}else if(campo=="ean"){
//**********commento ean**********
var tab="rilevazioni";
var cod="cod_ean";
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
result=xmlhttp.responseText;
document.getElementById("ean_text").innerHTML=result;
}
}
xmlhttp.open("POST","queryTesto.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("tab="+tab+"&cod="+cod+"&val="+value);
}
}
function firstSet(){
var pdvVal=document.getElementById("pdv").value;
var attivitaVal=document.getElementById("attivita").value;
var eanVal=document.getElementById("ean").value;
testo('pdv',pdvVal);
testo('attivita',attivitaVal);
testo('ean',eanVal);
}
come potete vedere si tratta di una semplice chiamata ajax a uno script php che poi eseguirà una query sul database.
Le funzioni startFunc() e firstSet() vengono chiamate al caricamento della pagina dall'evento onLoad, mentre la funzione testo(campo,value) viene chiamata al cambiare del valore di un campo di selezione, oltre che all'interno di firstSet().
Il problema che ho riscontrato è che, le prime due chiamate a testo(campo,value) all'interno di firstSet(), non funzionano. Tramite la console di Chrome ho scoperto che le due chiamate effettivamente funzionano, però il browser non rimane in attesa della risposta e passa subito all'istruzione successiva. Il risultato è che viene eseguita interamente solo l'ultima delle tre chiamate a testo(campo,value).
Ho provato a cambiare la chiamata con
codice:
var a = setTimeout("testo(campo,value)",500)
ma senza risultati, perchè le chiamate avvengono come se la temporizzazione non ci fosse proprio.
Come dovrei fare ad imporre l'attesa di una risposta alla prima chiamata prima di passare alla successiva?