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.