加载本地JSON文件

我试图加载一个本地的JSON文件,但它不会工作。 这是我的JavaScript代码(使用jQuery:

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

test.json文件:

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

什么都不显示,Firebug告诉我数据未定义。 在Firebug中,我可以看到json.responseText ,它是好的和有效的,但是当我复制该行时,它很奇怪:

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

在Firebug的控制台中,它可以工作,我可以访问数据。

任何人都有解决方案?


$.getJSON是异步的,所以你应该这样做:

$.getJSON("test.json", function(json) {
    console.log(json); // this will show the info it in firebug console
});

我有相同的需求(测试我的angularjs应用程序),我发现的唯一方法是使用require.js:

var json = require('./data.json'); //(with path)

注意:文件被加载一次,进一步的调用将使用缓存。

更多关于使用nodejs读取文件的信息:http://docs.nodejitsu.com/articles/file-system/how-to-read-files-in-nodejs

require.js:http://requirejs.org/


如果你想让用户选择本地json文件(在文件系统的任何地方),那么下面的解决方案工作。

它使用使用FileReader和JSON.parser(并没有jQuery)。

<html>
<body>

<form id="jsonFile" name="jsonFile" enctype="multipart/form-data" method="post">

  <fieldset>
    <h2>Json File</h2>
     <input type='file' id='fileinput'>
     <input type='button' id='btnLoad' value='Load' onclick='loadFile();'>
  </fieldset>
</form>


<script type="text/javascript">

  function loadFile() {
    var input, file, fr;

    if (typeof window.FileReader !== 'function') {
      alert("The file API isn't supported on this browser yet.");
      return;
    }

    input = document.getElementById('fileinput');
    if (!input) {
      alert("Um, couldn't find the fileinput element.");
    }
    else if (!input.files) {
      alert("This browser doesn't seem to support the `files` property of file inputs.");
    }
    else if (!input.files[0]) {
      alert("Please select a file before clicking 'Load'");
    }
    else {
      file = input.files[0];
      fr = new FileReader();
      fr.onload = receivedText;
      fr.readAsText(file);
    }

    function receivedText(e) {
      let lines = e.target.result;
      var newArr = JSON.parse(lines); 
    }
  }
</script>

</body>
</html>

以下是FileReader的一个很好的介绍:http://www.html5rocks.com/en/tutorials/file/dndfiles/

链接地址: http://www.djcxy.com/p/27557.html

上一篇: Loading local JSON file

下一篇: What does <![CDATA[]]> in XML mean?