Ciao ragazzi, sapete dirmi perché questo codice non funziona?
In pratica vorrei creare una funzione che imposti rapidamente il tipo di scambio dati con il server (post o get), imposti gli header corretti ed avvii una funzione da me scelta quando i dati del server sono stati inviati completamente (readyState=4).
Questo è il
codice:
/*ajax=oggetto XMLHttpRequest
method=get oppure post
action=file lato server che gestisce la richiesta
f=nome della funzione da richiamare quando readyState=4*/
function ajaxOpen(ajax,method,action,f) {
if (ajax) {
if (method=="get") {
ajax.open("get", action, true);
ajax.setRequestHeader("connection", "close");
} else {
ajax.open("post", action, true);
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
// impostazione controllo e stato della richiesta
ajax.onreadystatechange = function() {
// verifica dello stato
if(ajax.readyState === 4) {
// verifica della risposta da parte del server
if(ajax.status === ajaxStatusOk) {
eval(f+"(\""+ajax.responseText+"\");");
return 0; //tutto ok
} else return ajax.status; //errori ajax
}
}
} else return -1;
}
L'oggetto ajax passato come parametro è stato inizializzato correttamente con questo
codice:
var ajax= null;
browserUtente = navigator.userAgent.toUpperCase();
if (typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") ajax= new XMLHttpRequest();
else if (window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
if(browserUtente.indexOf("MSIE 5") < 0) ajax= new ActiveXObject("Msxml2.XMLHTTP");
else ajax= new ActiveXObject("Microsoft.XMLHTTP");
}
return ajax;
Firefox mi dice che la funzione ajaxOpen non è definita, quindi ci deve essere un errore interno alla funzione, ma non mi viene intercettato.