problemino con il valore di ritorno di una funzione

pino8314

Nuovo Utente
19 Gen 2009
3
0
0
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:
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
 

pino8314

Nuovo Utente
19 Gen 2009
3
0
0
no no... e poi se scarichi l'esempio che ho postato, riesci a vedere che il problema lo riscontro anche solo con una semplice stringa che mi ritorna php..

qui il problema non è il valore che mi passa php, che tra l'altro è una semplicissima stringa, ma del return della funzione di javascript... è come se il return della funzione javascript venisse restituito prima che la richiesta asincrona finisca...

quello che ho pensato io è che lo script si comporta i questo modo:

io eseguo la funzione save_general che instanzia l'oggetto CreateXmlHttpReq, a sua volta, la stessa funzione, invia la richiesta http alla pagina php e con una seconda funzione annidata (cioè onreadystatechange) controllo lo stato della richiesta inviata...
però, la mia teoria, è che lo script non si fermi attendendo che la richiesta venga terminata, ma continui fino alla fine restituendo il return risultato_finale;, che naturalmente è vuoto perchè viene popolato soltanto quando ottengo il valore dalla pagina php

sto letteralmente impazzando, vi prego datemi qualche idea

grazie mille per la tua risposta cmq
 
Discussioni simili
Autore Titolo Forum Risposte Data
B [MySQL] Problemino con UPDATE MySQL 10
L [HTML] Problemino con le immagini di sfondo HTML e CSS 4
Adwordsmaniac problemino con Chrome HTML e CSS 3
A problemino con $_POST PHP 5
otto9due Piccolo problemino con il formato data e immagini per gli rss PHP 1
L Recupero dati form in tabella e invio con ajax. Problemino jQuery 1
G Piccolo problemino con PHP, mi potreste aiutare per favore? PHP 0
A problemino con un form PHP 4
borgo italia problemino con serialize/unserialize PHP 5
Frank10 Problemino con il menu fisso in fondo pagina ed il solito, explorer HTML e CSS 10
S piccolo problemino con variabile tipo PHP 12
S problemino con dati database Database 0
S problemino con motore di ricerca :( PHP 1
O problemino con le sessioni tra le pagine PHP 2
Z Problemino con le date Classic ASP 1
catellostefano problemino con le sessioni PHP 7
K Problemino con le prime prove PHP 3
L [Java] Problemino con JSP Java 0
S Problemino da Newbie con DOM Javascript 0
F Problemino con IE e innerHTML Javascript 4
L problemino con explorer Windows e Software 4
Kanji Problemino con gif e flash Flash 6
A Problemino con pulsanti e movie clip Flash 0
T [HTML] [Prestashop] Problemino grafico su versione Responsive del sito CMS (Content Management System) 9
M problemino legale: farsi dare le password dai precedenti gestori del sito. Leggi, Normative e Fisco 0
otto9due Piccolo problemino su inserimento dati db da form PHP 5
P [RISOLTO]problemino di catalogazione Javascript 2
E MaterPage..problemino... ASP.NET 1
GoshMaledetto problemino evento click jQuery 4
A node.js - Problemino Javascript 0
T funzione isset qualche problemino PHP 5
G Errore MySQL (era: problemino) PHP 4
F problemino su un js da menujavascript.org Javascript 8
A problemino.... PHP 1
N problemino codice Javascript 1
S problemino click.. Flash 1
P Creare Modulo di Ricerca [era:problemino] Classic ASP 1
N Problemino col FrontPage... HTML e CSS 7
Nik Problemino tecnico Classic ASP 2
R Problemino Javascript 12
A ciao,chi può risolvermi un problemino sul blog? Discussioni Varie 0
C Problemino Stupido... HTML e CSS 5
D HELP ! problemino.... Sicurezza e Virus 1
S Problemino HTML e CSS 2
N problemino Classic ASP 1
F access ricerca record con apostrofo. MS Access 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
C Come ricreare questo calcolatore di prezzi a step con woocommerce? WordPress 0
C Segnalo barra laterale di navigazione ASSENTE con Chrome Comunicazioni dallo Staff 5
G Guadagna dalla Vendita di Articoli Sponsorizzati con GuestPostMax.com! Guadagnare col Sito 0

Discussioni simili