C'est un appel asynchrone, donc vous ne pouvez pas y retourner comme ça.
Vous devrez déplacer le code qui fait quelque chose avec data
dans la fonction de rappel (function(data){}
).
function getAreas(){
$.post("/custom_html/weathermap.php",'',
function(data){
//do something with data here, such as calling another function
}, "json");
}
Il faut un certain temps pour obtenir votre tête dans la façon asynchrone de penser, mais vous travaillerez dehors. Fondamentalement, le bit de code qui envoie la requête est fait une fois la demande envoyée. Ce fil d'exécution va finir, et votre navigateur va rester là, ne rien faire. l'appel $.post
récupérera les données de weathermap.php
et votre fonction de rappel sera appelée. Cela commence un tout nouveau fil d'exécution. Essayez de les considérer comme deux exécutions complètement séparées, un appel pré-ajax et un appel post-ajax.
Voici quelques bonté ascii:
V
|
User clicks button
(or something else happens)
|
|
Your JavaScript runs
|
|
And eventually gets
to the ajax call -------> SERVER ------> Server sends data back
|
|
And your callback is run
on the data and execution
continues from here
|
|
V
Nope, ne fonctionnera pas - 'ret' sera indéfini. – Skilldrick
La portée de la fonction anonyme n'est-elle pas de la même portée que getAreas? [modifier] apparemment je me trompais, désolé :) –
La fonction anonyme est un rappel, et ne sera appelée qu'après le retour de 'getAreas'. – Skilldrick