Ho una funzione JS che fa una chiamata AJAX ad un file PHP. La chiamata viene fatta più volte, ed ogni volta ho la necessità che, all'interno della funzione precedente, venga incrementato un valore.
Riporto il JS, così sarà più chiaro quello che dirò di seguito.
Da questa prima parte, si vede che:Codice PHP:
var numero = 1;
function incrementa() {
numero = numero++;
}
// request ajax
function createRequestObject() {
var ro;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer") {
ro = new ActiveXObject("Microsoft.XMLHTTP");
} else {
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function sndReq(action) {
http.open('get', 'loadata.php?action='+action);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
if (http.readyState == 4) {
var response = http.responseText;
document.getElementById("newload"+numero).innerHTML = response;
}
}
function handleResponse() {
if (http.readyState == 4) {
var response = http.responseText;
var el=document.getElementById("newload"+numero);
el.innerHTML = response;
}
}
- i dati richiamati via AJAX vengono caricati in un elemento il cui ID è costituito dalla parola newload e da un numero progressivo.
- c'è una funzione che dovrebbe incrementare la variabile numero
In pratica, io parto con un elemento con ID=newload1, dentro il quale carico dei dati via AJAX/PHP. I dati che mi arrivano via PHP costruiscono in coda al testo un nuovo elemento, con ID=newload2.
Poichè quando chiamo la funzione sndReq() chiamo contestualmente anche la funzione incrementa(), mi aspetterei che la variabile numero assumesse il valore 2, e quindi, alla successiva chiamata AJAX, i dati venissero caricati nell'elemento con ID=newload2
Invece, mentre viene correttamente creato l'elemento con id 2, la variabile numero non viene incrementata, e quindi la successiva chiamata AJAX viene fatta indirizzando i dati sempre all'elemento con id 1.
Tra l'altro, poichè anche per la funzione sndReq() ho bisogno di incrementare il valore, io faccio così:
Ma ovviamente continua a mandarmi come valore step1, e perciò ricaricando sempre gli stessi dati!...Codice PHP:
sndReq('step'+numero);
Come posso risolvere???
![]()
![]()