Newsgroup: it.comp.lang.javascript
Titolo: Variabili vuote fuori da $.get()!!

Ciao a tutti,
sono nuovo e vorrei sottoporvi un problema che mi assilla.
uso la funzione $.get per accedere/interrogare un file xml ma quando sono fuori dal get() le variabili sono null!!
Grazie in anticipo per l'aiuto.
 
ecco un codice di esempio:
--------------------------------------------------
file user.xml:
 
<?xml version="1.0" encoding="utf-8" ?>
<users>
  <user>
    <name>Barack Obama</name>
	<age>53</age>
  </user>
</users>
--------------------------------------------------
codice script:
 
$(document).ready(function(){
  var Name;
  var Age;           
  $.get("user.xml", function(data){ 
      $(data).find('users').find("user").each(function(){                            
        Name = $(this).find("name").text();  // <----- la variabile viene assegnata correttamente
        Age = $(this).find("age").text();    // <----- la variabile viene assegnata correttamente
      });
    },
  "xml"
  );
  $("#info").html(Name+", "+Age);  // <----- le variabili sono null!!!        
});

Ciao,
le variabili sono null perché non ancora assegnate.
Mentre il codice prosegue, la memorizzazione nelle variabili avviene al 
completamento della richiesta.


Grazie per la tua risposta ma ... non capisco.
scusami ma provengo da c++ e da poco mi sono dedicato al web.
la chiamata a get() avviene prima e a seguire $("#info").html(Name+", "+Age).
Perché dici che "la memorizzazione nelle variabili avviene al 
completamento della richiesta"?
Grazie.


.get chiama la funzione a secondo parametro dopo il completamento della
richiesta, che sicuramente avverrà dopo l'esecuzione della riga sotto.
E' uguale in C++, se immagini che quella che passi a .get sia una callback.
 
Ciao!

 Per la verità si possono fare anche sincrone, ma non è bello bloccare il
 
????
per la verità si possono anche fare ASINCRONO utilizzando la tecnica che 
viene chiamata AJAX tramite il comando javascript XMLHttpRequest.
 
NON diamo informazioni sbagliate a chi sta iniziando.
 
Ciao


GRAZIE A TUTTI, adesso è più chiaro
GRAZIE, GRAZIE.

 NON diamo informazioni sbagliate a chi sta iniziando.
 
Non mi sembra proprio questo il caso, non credi?
 


Il protocollo HTTP non è né sincrono né asincrono, visto che è stateless.
 
Ciao!


il protocollo HTTP effettua una richiesta e attende una risposta.
 
il fatto che sia stateless vuol semplicemente dire che una volta 
effettuata la richiesta e ricevuta la risposta chiude la comunicazione 
tra le parti (client/server).
 
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
 
 
http://en.wikipedia.org/wiki/Request-response
 
 
http://stackoverflow.com/questions/17481397/what-is-the-difference-between-synchronous-and-asynchronous-transmission-in-tcp
 
 
http://www.answers.com/Q/Why_http_is_asynchronous
 
 
http://hc.apache.org/httpcomponents-core-ga/tutorial/html/fundamentals.html
 
 
http://research.gigaom.com/2013/05/the-synchronous-vs-asynchronous-communication-debate-is-like-deja-vu-all-over-again/
 
 
Ciao

 
 
Mai sentito parlare di keep-alive? :) Sì, è definito nello standard HTTP.
 
E comunque, il fatto che sia stateless elimina la possibilità di definire
il flow come sincrono/asincrono: sincrono rispetto a cosa, visto che ogni
domanda/risposta è a se stante? :)
 
Ciao!