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!
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!