Ciao,
ho un problema che mi assilla e ho bisogno di un aiutino.
Ho scritto una serie di funzioni per farmi ritornare un albero xml da una pagina asp.
In una mia classe js ho il seguente metodo per l'invio della richiesta:
allora, il mio problema è che la funzione SendRequest ritorna sempre un null quando la chiamo dall'interno della mia funzione, sebbene l'alert commentato nell'onreadystatechange restituisca correttamente il mio codice xml.codice:this.SendRequest = function() { var xmlhttp = getXMLHttp(); var result = null; xmlhttp.open("POST", strPath, true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { if(xmlhttp.status==200) { result = xmlhttp.responseText; } else { result = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"+ "<root><error><number>"+xmlhttp.status+"</number>"+ "<description>"+xmlhttp.statusText+"</description>"+ "<source>xmlhttp request</source></error></root>"; } //alert(result); } }; xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send("sql="+escape(self.sql)); return result; };
Adesso, il problema mi pare chiaro, l'evento onreadystatechange viene scatenato dopo che io utilizzo il valore di ritorno della funzione SendRequest..
Esiste un modo per far si che questo non accada? ossia, posso far ritornare alla funzione il valore che vado a pescarmi via xmlhttp, chessò, mettendo in sleep la funzione o in qualche altro modo legale o illegale?
So che mettendo tutto il mio codice dentro l'onreadystatechange tutto funziona, ma mi fa decisamente schifo e inoltre questo mi limiterebbe la riusabilità della classe, dato che dovrei ogni volta modificare una sua funzione per adattarla alle nuove esigenze.
Spero di essermi spiegato, grazie a chi mi saprà illuminare
![]()

Rispondi quotando