Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99

    [JAVASCRIPT]Variabile globale/locale

    Ciao ragazzi
    Ho un problema con del codice Javascript.
    Ho una funzione richiamata da un'altra funzione che fa una richiesta verso una pagina php e legge delle informazioni.

    codice:
    function myHandler() {
    if (myRequest.readyState == 4 && myRequest.status == 200) { 		
    e = document.getElementById("MIODIV");         
    e.innerHTML = myRequest.responseText; 		
    Dt = myRequest.responseText;     }
    }
    Ora siccome in myRequest.responseText ho una serie di dati da me generati SEPARATI dalla , vorrei passare la variabile Dt al di fuori di questa funzione in modo tale da splittarla [ Split(,)] e creare un array di dati.
    Come posso passare la variabile Dt al di fuori di questa funzione o come posso renderla globale?
    Ricordo che questa funzione viene richiamata da un altra funzione quindi col return mi da problemi...

    RINGRAZIO TUTTI ANTICIPATAMENTE

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99
    Cioè che la dichiaro all'inizio?
    In effetti ce l'ho dichiarata in questo modo all'inizio della pagina
    var myRequest = null;
    var Dt;

    però se dopo le function faccio un alert(Dt);
    non mi da alcun alert e nella console degli errori di mozilla mi dice
    "Dt is undefined"

    Come faccio?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Originariamente inviato da cadan2
    Cioè che la dichiaro all'inizio?
    In effetti ce l'ho dichiarata in questo modo all'inizio della pagina
    var myRequest = null;
    var Dt;
    la variabile globale va dichiarata all'esterno di tutte le funzioni presenti nello script...

    però se dopo le function faccio un alert(Dt);
    non mi da alcun alert e nella console degli errori di mozilla mi dice
    "Dt is undefined"

    Come faccio?
    probabilmente quando esegui l'alert la variabile non è ancora stata valorizzata dalla funzione myHandler...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99
    Mmmmm nonostante i tuoi consigli credo che cmq il codice sia "apposto"
    a questo punto lo posto
    codice:
    // JavaScript Document
    var myRequest = null;
    var Dt;
    
    function CreateXmlHttpReq2(handler) {
      var xmlhttp = null;
      try {
        xmlhttp = new XMLHttpRequest();
      } catch(e) {
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
      }
      xmlhttp.onreadystatechange = handler;
      return xmlhttp;
    }
    
    
    function myHandler() {
        if (myRequest.readyState == 4 && myRequest.status == 200) {
    		Dt = myRequest.responseText;
        }
    		
    }
    
    function esempio3() {
        myRequest = CreateXmlHttpReq2(myHandler);
        myRequest.open("GET","read_info.php");
        myRequest.send(null);
    }
    
    alert(Dt);
    Lancio la funzione esempio3() nel body con onload
    Con questo codice mi da l'alert con scritto "undefined"

    Se metto un altro alert(Dt) nella funzione myHandler()
    aggiorno la pagina mi da in questo ordine:
    1)Alert "undefined" //fuori dalle function
    2)Alert con i dati //messo nella function

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    quando esegui l'alert la variabile non è ancora stata valorizzata dalla funzione myHandler

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99
    Si Vindav,
    ho fatto alcune prove ed è come dici tu.
    A questo punto non mi rimane che mettere il lancio della funzione successiva quando la variabile è piena
    ed infatti poi se faccio 1 alert nella function start_ciclo mi stampa i dati letti
    codice:
      if (myRequest.readyState == 4 && myRequest.status == 200) {
    		Dt = myRequest.responseText;
    		start_ciclo();
        }
    Grazie ragazzi
    Grazie Vindav

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.