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); } ) ;