Problemino con il valore di ritorno di una funzione

lunedì 19 gennaio 2009 - 19.56

pino8314 Profilo | Newbie

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


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

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(verificaTempoTrascorso,
timeOutCheckWait);
};
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

http://lnx.ampsrl.net/ajax.zip

balfaz Profilo | Expert

io proporrei 2 opzioni
- dichiara un'altra variabile come string e non object (var risult_fin = '';), poi passi questo valore e questa variabile sarà quella a ritornare per essere usata per l'alert

l'altra opzione è
- nel momento nel quale invii la variabile fai cosi return risultato_finale.value;
"Che in questo 2009 i nostri codici possano sconvolgere il mondo."
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5