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:
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); XMLHttpRequestObject.send(post_param);
poicodice:alert("2: "+post_param);
e infinecodice:alert("esecuzione funzione");
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"codice:alert("1: "+post_param);
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"; }

Rispondi quotando