web-dev-qa-db-fra.com

charger json dans variable

Je dois faire quelque chose de très simple, mais il ne semble pas y avoir de moyen facile de le faire, pour autant que je sache. Je veux simplement charger des données JSON à partir d'une source distante et les stocker dans une variable Javascript globale à l'aide de jQuery. Voici ce que j'ai

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

La variable my_json reste indéfinie. Je pense que c'est clairement une question de portée. Il me semble que la méthode $ .getJSON devrait renvoyer JSON, mais elle retourne un objet XMLHttpRequest. Si je fais ça:

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

Cela ne fonctionne pas car jusqu'à ce que readystate == 4, le responsetext reste 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.

Cela ne peut pas être si difficile! Droite?

47
Aaron

Cela va le faire:

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 sera exécuté de manière asynchrone, votre Javascript progressera donc au-delà de l'expression qui l'invoque même avant que son rappel success ne soit déclenché. 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 asynchrone (c’est-à-dire que la valeur par défaut est true ). Si vous avez besoin de synchrones demandes, définissez cette option sur false . Notez que les requêtes synchrones peuvent verrouiller temporairement le navigateur, désactiver toutes les actions pendant que le la demande est active.

121
karim79

le bit de code doit lire:

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

var itens = null;
$.getJSON("yourfile.json", function(data) {
  itens = data;
  itens.forEach(function(item) {
    console.log(item);
  });
});
console.log(itens);
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>
<body>
</body>
</html>

0
Rodrigo Slompo
  • cela obtiendra un fichier JSON en externe avec votre variable javascript.
  • désormais, cette base de données exemple contiendra les valeurs du fichier JSON.

    var sample_data = ''; $.getJSON("sample.json", function (data) { sample_data = data; $.each(data, function (key, value) { console.log(sample_data);

0
Noel Sasikanth
<input  class="pull-right" id="currSpecID" name="currSpecID" value="">

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

 enter image description here  enter image description here

0
MAFAIZ