charger json en variable

Je dois faire quelque chose de très simple, mais pour autant que je sache, cela ne semble pas être un moyen facile. Je veux juste charger des données JSON depuis une source distante et les stocker dans une variable Javascript globale en utilisant jQuery. Voici ce que j’ai:

var my_json; $.getJSON(my_url, function(json) { var my_json = json; }); 

La variable my_json rest indéfinie. Je pense que c’est clairement un problème de scope. Il me semble que la méthode $ .getJSON devrait renvoyer JSON, mais elle retourne un object XMLHttpRequest. Si je fais ceci:

 request = $.getJSON(my_url); my_json = request.responseText.evalJSON(); 

Cela ne fonctionne pas car jusqu’à la readystate == 4, le responsetext rest nul. Il semble que vous deviez utiliser la fonction de rappel pour renvoyer le responsetext, car il se déclenche en cas de succès.

Ça ne peut pas être si difficile! Droite?

Cela le fera:

 var json = (function () { var json = null; $.ajax({ 'async': false, 'global': false, 'url': my_url, 'dataType': "json", 'success': function (data) { json = data; } }); return json; })(); 

Le problème principal étant que $.getJSON s’exécutera de manière asynchrone, votre Javascript passera donc au-delà de l’expression qui l’invoque avant même que son rappel de success déclenche. Il n’y a donc aucune garantie que votre variable capturera des données.

Notez en particulier l’option 'async': false dans l’appel ajax ci-dessus. Le manuel dit:

Par défaut, toutes les demandes sont envoyées de manière asynchrone (c’est-à-dire que cette valeur est définie sur true par défaut). Si vous avez besoin de requêtes synchrones, définissez cette option sur false. Notez que les requêtes synchrones peuvent verrouiller temporairement le navigateur, désactivant toute action lorsque la demande est active.

le bit de code doit lire:

 var my_json; $.getJSON(my_url, function(json) { my_json = json; }); 
  $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){ alert("Data: " + data + "\nStatus: " + status); $("#currSpecID").val(data); }); 

entrer la description de l'image ici entrer la description de l'image ici

 var itens = null; $.getJSON("yourfile.json", function(data) { itens = data; itens.forEach(function(item) { console.log(item); }); }); console.log(itens);