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";
}