PDA

View Full Version : [DOM/AJAX][Newbie] comportamento anomalo dei metodi


Re_Kotc
03-09-2008, 21:50
vi chiedo aiuto per uno script ajax che sto provando a scrivere...molto poco diligentemente lo ammetto..


function eseguiRichiesta(url) {



var http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// Vedi note sotto
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Giving up :( Non riesco a creare una istanza XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { alertContents(http_request); };
http_request.open('GET', url, true);
http_request.send(null);

alert("RICHIESTA CORRETTAMENTE ESEGUITA");

}

function alertContents(http_request) {

if (http_request.readyState == 4) {

alert("READY STATE");

if (http_request.status == 200) {

//SEARCH ENGINE
// getResults(http_request);

} else {
alert('Si è verificato un problema con la richiesta');
}

}else {

alert("NOT IN A READY STATE");

}


alert("ALERT TERMINATO");


}




function searchQuery(url) {



eseguiRichiesta(url);

}





function search() {




url = urlArray[0];

alert(url);
searchQuery(url);

url = urlArray[1];

alert(url);
searchQuery(url);


}


non dovrebbe essere molto complicato visto che buona parte del codice è standard per inizializzare l'XMLHttpRequest e l'ho copiato pari pari da vari siti..

il funzionamento della funzione search() per adesso dovrebbe essere quello di chiamare per 2 volte searchQuery passandogli url come argomento, url che proviene da un array di url chiamato urlArray; prima di ogni chiamata gli ho fatto stampare a video con un alert l'url stesso per essere certo che lo ricevesse correttamente.

una volta chiamata la funzione eseguirichiesta(url) dovrei semplicemente per ogni url passatogli instanziare un oggetto http_request e poi richiamare la funzione alertContents e poi terminare.

la sequenza di messaggi che ottengo eseguendo il tutto è:

test.xml
NOT IN A READY STATE
ALERT TERMINATO
RICHIESTA CORRETTAMENTE ESEGUITA

test2.xml
NOT IN A READY STATE
ALERT TERMINATO
RICHIESTA CORRETTAMENTE ESEGUITA

(e poi questa sequenza che non capisco proprio...)


NOT IN A READY STATE
ALERT TERMINATO
NOT IN A READY STATE
ALERT TERMINATO
NOT IN A READY STATE
ALERT TERMINATO
NOT IN A READY STATE
ALERT TERMINATO
NOT IN A READY STATE
ALERT TERMINATO
NOT IN A READY STATE
ALERT TERMINATO

perchè mi stampa tutte queste volte not in a ready state e alert terminato??...e poi...perchè non è in ready state?...so che forse non è una domanda semplicissima ma non riesco a spiegarmelo solo guardando il codice...
thanks!