ciao
sto facendo una semplice applicazione che interroga una pagina aspricevendone un file xml
la pagina asp se aperta in un browser restituisce un file xml perfettamente formattato del peso di meno di 1KB
vedendo che non succedeva niente lato ajax ho disattivato un controllo su readystate ed ha cominciato a darmi errori dicendo che non era possibile creare l'oggetto xml
facendo qualche altro controllo mi sono accorto che il readystate dell'oggetto XMLHttpRequest rimane perennemente a 1, cioè caricamento...
ma de che? deve caricare solo qualce byte...
il codice in questione è il seguente:
Codice PHP:
function interroga_db_messaggi() {
if (obj_ricevi.readyState == 4 || obj_ricevi.readyState == 0) {
obj_ricevi.open("GET", 'pagina.asp?id_ultimo_messaggio=' + ultimo_messaggio, true);
obj_ricevi.onreadystatechange = elabora_interrogazione(); //elabora la risposta dal server
obj_ricevi.send(null);
}
}
function elabora_interrogazione() {
if (obj_ricevi.readyState == 4) {
obj_xml = obj_ricevi.responseXML; //tutto l'albero xml
ultimo_messaggio = obj_xml.getElementsByTagName("ultimo_messaggio"); //mi segno l'id dell'ultimo messaggio inserito
div_messaggi.innerHTML = div_messaggi.innerHTML + ultimo_messaggio + ' '
xml_messaggi = obj_xml.getElementsByTagName("messaggio"); //i nodi dei messaggi
var num_messaggi = xml_messaggi.length; //totale dei messaggi presenti nell'xml
//ciclo tra i messaggi
for (i = 0; i < num_messaggi; i++) {
//estraggo i dati
xml_utente = xml_messaggi[i].getElementsByTagName("utente");
xml_ora = xml_messaggi[i].getElementsByTagName("ora");
xml_testo = xml_messaggi[i].getElementsByTagName("testo");
//ed alla fine aggiorno il div
div_messaggi.innerHTML = div_messaggi.innerHTML +
'<p style="margin-top:10px; margin-bottom:0px;">' + xml_ora + ' [b]' + xml_utente + '[/b]:</p>' +
'<p style="margin-left:10px; margin-top:0px;">' + xml_testo + '</p>'
}
}
}