如何在Javascript中加载本地文件

时间:2015-02-25 21:38:46

标签: javascript

我有一个名为dump.json的文件格式:

[{"key": "XYZ", "values": [[1424642400000, 28], [1424728800000, 80], [1424815200000, 92]]}]

并且,我想要做的是以变量名histcatexplong在JavaScript中以某种方式加载它:

var histcatexplong = [{"key": "XYZ", "values": [[1424642400000, 28], [1424728800000, 80], [1424815200000, 92]]}];

我该怎么做?

2 个答案:

答案 0 :(得分:1)

正如我在评论中所说,这可以在线上和线下使用(不需要网络服务器),而 XMLHTTPRequest 则可以。请注意,Filereader仅在现代浏览器中受支持。 http://caniuse.com/#feat=filereader



  function readSingleFile(evt) {
    var f = evt.target.files[0]; 

    if (f) {
      var r = new FileReader();
      r.onload = function(e) { 
	      var contents = e.target.result;
       document.querySelector("div").innerHTML=  "Got the file.n" 
              +"name: " + f.name + "n"
              +"type: " + f.type + "n"
              +"size: " + f.size + " bytesn"
              + "starts with: " + contents
           //store it as JSON
           histcatexplong = JSON.parse(contents);
      }
      r.readAsText(f);
    } else { 
      alert("Failed to load file");
    }
  }

  document.getElementById('fileinput').addEventListener('change', readSingleFile, false);

<input type="file" id="fileinput" />
<div></div>
&#13;
&#13;
&#13;

作为我的意思的一个例子。

答案 1 :(得分:0)

我只是向.json文件发送一个没有参数的GET请求。请注意,以下代码示例在IE5 / IE6中不起作用,请查看this answer以获取更多跨浏览器解决方案,并且由于same origin policy必须在服务器(例如localhost)上运行。一个粗略的想法:

 var histcatexplong;
 var xhReq = new XMLHttpRequest();
 xhReq.open("GET", "dump.json", true);
 xhReq.send(null);
 xhReq.onreadystatechange=function()
 {
  if (xhReq.readyState==4 && xhReq.status==200)
      histcatexplong=JSON.parse(xhReq.responseText);
 }