Question

J'écris une application web et ont besoin d'initialiser certains paramètres que je tire via la méthode .getJSON $ ().

$.getJSON("../config/", function(data)
{
     console.debug(data);
}

Or, puisque ces valeurs seront utilisées à l'échelle mondiale tout au long du script et ne seront pas directement déclenchement d'un événement (qui est la seule mise en œuvre de .getJSON $ () je pouvais trouver dans la documentation), comment puis-je retourner ou récupérer ce rappel données?

Était-ce utile?

La solution

Votre meilleur pari est de coller avec la technique de rappel.

Il y a 2 façons réelles pour le faire fonctionner, les deux sont essentiellement les mêmes.

$.getJSON("../config/", function(data) {
        SomeObject.config = data; 
        SomeObject.load();   # assuming load tells some-object that it now has data and to get cracking
});

ou

$.getJSON("../config/", function(data) {
        SomeObject.load( data );   # SomeObject sets itself up and starts doing its thing
});

Essayer d'utiliser .getJSON $ de façon synchrone (ie: l'avoir renvoie une valeur) ne se terminera dans les larmes et la misère aussi bien pour vous et les personnes qui utilisent votre site, car les connexions synchrones ont une tendance à bloquer l'interface utilisateur entière. :)

En l'état actuel, en faisant quelque chose comme ça de manière asynchrone

var i = null;                              #1
$.getJSON("../config/", function(data) {   #2
        i = data;                          #3
});                                        #4
some_function_with(i);                     #5

Ne fonctionne pas, parce que la ligne 5 est presque certain d'exécuter avant la ligne 3.

Autres conseils

Kent Fredric: Je ne suis pas sûr si votre approche pourrait être mieux, donc si votre méthode est mieux me faire savoir comment et je vais accepter votre solution sur moi-même, mais voici comment je l'ai fait:

 var my_data = null;

$.ajax(
{
    url: "../config/",
    dataType: "json",
    async: false,
    success: function(data)
    {
        my_data = data;
    }
});

Merci également vous RichieHindle, je ne savais pas qu'il était possible de remplacer les variables en dehors des fonctions sans retour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top