Salve,

ho un piccolo problema con il ritorno dei dati da parte di una funzione in javascript che invia richieste asincrone

vi spiego meglio...

allora, attraverso un pulsante io lancio questa funzione

Codice PHP:
function esecuzione(){

    
//pagina da interrogare    
    
var stringa "save.php";

    
//funzione che interroga la pagina    
    
var result_final save_general(stringa);

    
//attraverso questo alert voglio che mi venga mostrato il risultato della funzione attraverso il return
    
alert(result_final);
    
    return 
false;


proseguiamo

Codice PHP:

function save_general(pagina_salvataggio) {
    
    var 
maxSecondsWait 10;
    var 
timeOutCheckWait 500;

    var 
dataChiamata = new Date();
    var 
inizioChiamata dataChiamata.getTime();
    var 
verificaTempoTrascorso;
    var 
checkWaitInitialized false;
    var 
maxWait;
    var 
risultato_finale;
    

    
myRequest CreateXmlHttpReq();
    
    
myRequest.open("GET"pagina_salvataggio);

    
myRequest.setRequestHeader("connection""close");

    
myRequest.onreadystatechange = function() {
    
        if (
myRequest.readyState === 4) {

            
verificaTempoTrascorso = function(){};

                if (
myRequest.status == 200){
                
                    
risultato_finale myRequest.responseText;
                    
document.getElementById("div_p").innerHTML risultato_finale;
            
                }else{
            
                    
alert("errore");

                }
        
        }else if (! 
checkWaitInitialized) {
        
            
maxWait maxSecondsWait 1000;
              
verificaTempoTrascorso = function() {
            
dataChiamata = new Date();

                if((
dataChiamata.getTime() - inizioChiamata) > maxWait) {
                    
//tempo scaduto!!
                    
                    
myRequest.onreadystatechange = function(){return;};
                    
myRequest.abort();
                    
                    
alert("errore");
                    
                } else 
                      
setTimeout(verificaTempoTrascorsotimeOutCheckWait);
              };
              
verificaTempoTrascorso();
              
checkWaitInitialized true;
        };
        
    };

    
myRequest.send(null);
        
    return 
risultato_finale;


come potete vedere dalla seconda porzione di codice, in caso di myRequest.status == 200, stampo all'interno di un div il myRequest.responseText e fin qui non ci sono problemi, ottengo perfettamente il valore dalla pagina php... a questo punto vorrei che myRequest.responseText mi venga ritornato alla fine della funzione (return risultato_finale) e invece non ottengo altro che un undefined. Sapreste dirmi per quale motivo questo valore non vuole passare

ho fatto un piccolo esempio cosicchè potete provarlo. Come potete vedere dall'esempio, una volta cliccato sul pulsante, sul div mi viene stampato corretamente il valore passatomi dalla pagina php, mentre nell'alert ottengo un undefined e invece vorrei ottenere lo stesso valore stampato sul div


esempio