JavaScript obtenir des données json à une variable globale
function test(){
$.getJSON( "notebook-json-data.php", function( data ) {
var myData = data;
});
}
Ici, dans ma fonction je reçois des objets json, mais je veux accéder à myData
variable hors de la portée de sa fonction.
J'ai essayé de réglage var myData
à l'extérieur de la fonction, mais pas de chance.. 🙁
Je ne suis pas familier avec JSON, je n'ai besoin d'aucune analyse?
comment définir cette variable comme globale??
S'il vous plaît aider...
var myData
en dehors de la fonction, pas de répétition de var
l'intérieur de la fonction (ce serait de créer une nouvelle ombre myVar
). Gardez à l'esprit de l'appel asynchrone de sorte que vous ne pouvez pas simplement y accéder après la getJSON
appelNe pas polluer la portée mondiale avec des variables. Passer un callback en
test()
au lieuVous pouvez définir global, tout ce que vous voulez, il stil ne sera pas accessible à l'extérieur de la fonction de rappel qu'ajax est asynchrone!
Comment faire pour retourner la réponse d'un appel Ajax
Il pourrait y avoir des cas où vous essayez de lire variable avant de getJSON méthode fini avec la lecture de JSON. Il est appel asynchrone. Vous devez attendre jusqu'à ce que cette fonction termine son processus.
OriginalL'auteur Hareesh | 2014-07-23
Vous devez vous connecter pour publier un commentaire.
N'essayez pas de régler
myData
comme une variable globale - ça ne marchera pas parce quegetJSON
est asynchrone. Soit utiliser un promesse:Ou un rappel:
Modifier
Puisque vous souhaitez utiliser les données dans d'autres domaines de votre code, utilisez une fermeture à créer un environnement où les variables ne coule pas dans l'espace mondial. Par exemple, avec le rappel:
myData
est mis en cache dans une variable globale spécifiques à la fermeture. Note les autres fonctions ne seront en mesure d'utiliser cette variable une fois le rappel est terminé.voir mon edit.
function autoPopulate(field,id){ test(function (data) { myData = data; console.log(myData); }); }
lorsque j'appelle la fonction plusieurs fois dans mon code html,est une demande de l'envoyer au serveur à chaque fois à la charge "notebook-json-data.php"?de toute façon possible de mettre en cache les données ou la précharge première fois et que vous utilisez?
Mon montage vous permet de mettre en cache les données dans
myData
- une variable globale, mais seulement à celle de fermeture.OriginalL'auteur
Vous pouvez faire usage de rappel à l'ordre pour obtenir les données de la réussite
merci @ApitJohnIsmail pour les gentils mots 🙂
OriginalL'auteur
Au lieu de créer des variables globales, c'est mieux d'appeler un rappel sur "terminé", comme ceci:
Pour plus d'informations, getJSON API.
Le problème est que getJSON est asynchrone, tout en getJSON est traitement de données, l'exécution de votre code.
OriginalL'auteur
Déclarer un mondial objet json
Maintenant u peut définir la dynamique de données de l'objet à l'aide de
Vous pouvez obtenir n'importe où dans votre fichier js. en utilisant
APP.myData
OriginalL'auteur