Stockage de la réponse $ .getJSON () à local var

J'ai besoin d'utiliser une fonction à plusieurs reprises et je voulais éviter d'écrire la même méthode à plusieurs reprises. Je voulais utiliser la réponse $ .getJSON () et le stocker dans un var qui sera retourné. De cette façon, je peux simplement appeler la méthode.

function startFilter(){ var grid = []; $.getJSON('data/gridData1.json',function(json){ grid = json; console.log(grid); }); console.log(grid); return grid; } 

La grille var est définie à l'intérieur de .getJSON mais pas en dehors de .getJSON. Toutes les idées pourquoi, et si plus d'informations est nécessaire, faites-moi savoir?

Les appels Ajax sont asynchrones. Voici comment les choses sont positionnées dans le temps.

 function startFilter(){ var grid = []; // (1) $.getJSON('data/gridData1.json', function(json){ // (2) grid = json; // (5) console.log(grid); // (6) }); console.log(grid); // (3) return grid; // (4) } 

Vous devez utiliser les rappels pour créer votre logique:

 function startFilter(callback) { $.getJSON('data/gridData1.json', callback); } var grid = []; startFilter(function(json) { grid = json; // your logic here }); 
 var grid; function startFilter(dataReady ){ var grid = []; $.getJSON('data/gridData1.json',function(json){ grid = json; dataReady () ; }); console.log(grid); return grid; } startFilter ( function () { console.log(grid); } ) ;