Ho questa funzione (ajaxRequest), all'interno di questa funzione c'è una funzione anonima che chiama un'altra funzione (alteraDomanda).
alteraDomanda è una semplice funzione che ritorna una stringa quando eseguita. Io vorrei che questa stringa di ritorno sa letta fuori dalla funzione anonima, esattamente qui:
codice:
    alert("2: "+post_param);
    XMLHttpRequestObject.send(post_param);
Ma sebbene abbia definito post_param fuori dalle funzioni quando l'alert viene eseguito mi ritorna 2: undefined. Il problema è che viene eseguito in ordine:
codice:
alert("2: "+post_param);
poi
codice:
alert("esecuzione funzione");
e infine
codice:
alert("1: "+post_param);
Il primo alert, come detto prima, ritorna undefined, poi viene eseguita la funzione e infine viene stampato l'ultimo alert col giusto valore di post_param cioè "IN FUNCTION"

Ovviamente il mio problema è fare in modo che al primo alert sia già mostrata la stringa IN FUNCTION. Come posso risolvere????

Questo è il codice completo:
codice:
var post_param;
function ajaxRequest(func, src, type, p1, p2, p3, p4, p5, p6, p7) {
    var XMLHttpRequestObject = false;

    if (window.XMLHttpRequest) {
        XMLHttpRequestObject = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if(XMLHttpRequestObject) {
        XMLHttpRequestObject.open(type, src, true);

        if (type=='POST')
            XMLHttpRequestObject.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');

        XMLHttpRequestObject.onreadystatechange = function(){
            if (XMLHttpRequestObject.readyState == 1) {
                // PRELOADER
            } else if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
                var xmlDocument = XMLHttpRequestObject.responseXML;

                  post_param = alteraDomanda();
                  alert("1: "+post_param);
            }
        }

        if (type=='GET')
            XMLHttpRequestObject.send(null);
        else if (type=='POST'){
            alert("2: "+post_param);
            XMLHttpRequestObject.send(post_param);
        }
    }

}

function alteraDomanda() {
     alert("esecuzione funzione");
     return "IN FUNCTION";
}