Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    JQuery: varibaili globali che non funzionano

    Buongiorno,
    sto imparando JavaScript e JQuery e ho un problema con la definizione delle variabili.

    In questo codice, al caricamento della pagina carico un file esterno tramite i metodi Ajax di JQuery, quindi vorrei assegnarne il valore a una variabile da usare in seguito. Purtroppo la sintassi che sto usando pare non funzionare e non riesco, ovviamente , a capirne il perchè.
    Qualcuno potrebbe illuminarmi? Grazie mille!

    Ecco il codice

    codice:
    $(window).load(function() {
      $.get('http://localhost/_SandBox/JavaScript/Learn-JQuery/_SourceCodeFromPackt/Chapter%206/exercises-content.html', function(data) {
          tooltipsIndexes = data;
        });
    });
    
    
    $(document).ready(function() {
      console.log(tooltipsIndexes);
    
    ... ALTRO CODICE ...
    });
    Provo ad usare console.log ma mi dice

    Uncaught ReferenceError: tooltipsIndexes is not defined

    Cosa dovrei fare per passare la variabile da $(window).load a $(document).ready?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,651
    quel valore sarebbe anche accessibile da entrambi (in quanto la variabile non e' locale alla singola funzione) ma la tempistica e' sicuramente errata: setti il valore al termine di una chiamata asincrona (gia' di per se' fuori dalla normale flusso d' esecuzione) eseguita al window onload mentre cerchi di leggere il valore al completo caricamento del DOM (sicuramente prima dell' onload)

    fai scrivere quel console.log al click su di un elemento e dovresti ritrovare il valore che cerchi
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    Altra soluzione, dipende dai casi: puoi inizializzare la tus variabile fuori dalla chiamata e poi verificare con un timeout se il valore è cambiato.

  4. #4
    Ok ragazzi, ho capito in teoria il concetto.
    Se eseguissi la chiamata via $.get in $(document).ready risolverei il problema?

    Poi non ho capito bene questa storia dei tempi: per caso conoscete un documento che la spieghi in modo chiaro e semplice?

    Come scritto sto imparando ora e quindi molti concetti non li ho ben chiari: se mi aiutaste a capirne di più ve ne sarei davvero grato!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    La storia dei tempi è presto fatta... se usi ajax il tuo server impiega del tempo a elaborare i dati e rispedirteli (sia con post che con get) quindi devi far aspettare al tuo codice questo tempo... e lo puoi fare usando il complete della chianata ajax, che esegue quello che gli dici quando il tuo server ha risposto, oppure usi una funzione e una variabile globale che viene modificata dal success di ajax e nella tua funzione controlli ogni tot (setInterval) se la variabile è cambiata (e in tal caso fai partire ciò che deve succedere quando la chiamata ajax finisce)

  6. #6
    Ok Simo, ci sono: ho capito che intendi quando dici di usare una variabile di controllo e di fare il check sul valore a intervalli di tempo fin quando non è, per esempio, callCompleted == true.

    Però, da quello che ho capito nel mio brevissimo codice ci sono due problemi di tempo: il primo legato al fatto che eseguo una chiamata asincrona via AJAX (e per risolverlo uso la tua soluzione); il secondo che cerco di leggere la variabile al caricamento del DOM, fatto che avviene prima ancora della chiamata AJAX (che sta in window onload) (se ho capito correttamente quanto mi avete scritto in precedenza).

    Ora, risolto il problema temporale dell'asincronia della chiamata, rimane il problema dell'ordine di caricamento degli elementi: capito che il dom si carica prima di window, la mia domanda è: esistono altri elementi oltre a dom e window? Se si, dove trovo l'ordine preciso di caricamento di ognuno di essi? Sono ordini variabili o universali, magari definiti da specifiche precise?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

Tag per questa discussione

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 © 2020 vBulletin Solutions, Inc. All rights reserved.