471 votes

Fichier de chargement local json

Je suis en train de charger un local fichier json mais il ne fonctionne pas. Voici mon code javascript (à l'aide de jquery)

var json = $.getJSON("test.json");
var data = eval("(" +json.responseText + ")");
document.write(data["a"]);

Le test.fichier json :

{"a" : "b", "c" : "d"}

Rien n'est affiché et Firebug m'indique que les données n'est pas défini. Dans Firebug je vois json.responseText. Il est bon et valable. Le plus étrange, c'est quand je copie la ligne

 var data = eval("(" +json.responseText + ")");

dans Firebug de la console, il fonctionne, et je peux accéder à des données.

Quelqu'un a une solution ?

Merci

355voto

seppo0010 Points 3758

``est asynchrone. Voir http://api.jquery.com/jQuery.getJSON/

Vous devez faire

251voto

Ehvince Points 1672

J’ai eu le même besoin (pour tester mon app angularjs), et le seul moyen que j’ai trouvé est d’utiliser require.js :

Remarque : le fichier est chargé une seule fois, outre les appels utilisera le cache.

Plus sur la lecture de fichiers avec nodejs : http://docs.nodejitsu.com/articles/file-system/how-to-read-files-in-nodejs

Require.js : http://requirejs.org/

121voto

Si vous souhaitez laisser l’utilisateur sélectionner le fichier json local (n’importe où sur le système de fichiers), alors la solution suivante fonctionne.

Il utilise utilisations FileReader et JSON.parser (et pas de jquery).

Voici une bonne introduction sur FileReader : http://www.html5rocks.com/en/tutorials/file/dndfiles/

6voto

ns-1m Points 144

Récemment, D3js est capable de gérer des fichiers json locales.

Il s’agit de la question https://github.com/mbostock/d3/issues/673

Il s’agit de l’envue de patch pour D3 travailler avec des fichiers json locales. https://github.com/mbostock/D3/pull/632

1voto

user3667712 Points 11
$.ajax({
       url: "Scripts/testingJSON.json",
           //force to handle it as text
       dataType: "text",
            success: function (dataTest) {

                //data downloaded so we call parseJSON function 
                //and pass downloaded data
                var json = $.parseJSON(dataTest);
                //now json variable contains data in json format
                //let's display a few items
                $.each(json, function (i, jsonObjectList) {
                for (var index = 0; index < jsonObjectList.listValue_.length;index++) {
                      alert(jsonObjectList.listKey_[index][0] + " -- " + jsonObjectList.listValue_[index].description_);
                      }
                 });


             }
  });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X