Javascript读取文件

时间:2017-07-01 17:18:04

标签: javascript json ajax reactjs

当我得到" $ ref"时,我必须动态地读取JSON文件。在 Json架构

我尝试使用node.js访问json文件' fs'模块。但是这会导致错误&f;'fF()' 不起作用。

我后来尝试了Ajax调用但是我遇到了错误。

XMLHttpRequest cannot load file:///Users/as6/Downloads/1099K.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

下面是我在javascript中读取json文件的代码。

function readTextFile(file, callback) {
    var rawFile = new XMLHttpRequest();
    rawFile.overrideMimeType("application/json");
    rawFile.open("GET", file, true);
    rawFile.onreadystatechange = function() {
        if (rawFile.readyState === 4 && rawFile.status == "200") {
            callback(rawFile.responseText);
        }
    }
    rawFile.send(null);
}
readTextFile("file:///Users/as6/Downloads/1099K.json", function(text){
      var data = JSON.parse(text);
      console.log(data);
  });

如果没有 Jquery ,我将如何在javascript中读取JSON文件?

2 个答案:

答案 0 :(得分:1)

错误已经告诉你出了什么问题。 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

问题是你试图通过file://协议打开本地文件,并且浏览器告诉你,你不能使用XHR。这里的简单修复是在您的计算机上安装一个最小的静态文件服务器。

有关COR的更多信息,请访问:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

正如您提到的nodejs,我将继续并假设您安装了它。我建议https://www.npmjs.com/package/http-server这样你就可以起来跑步了。

答案 1 :(得分:1)

您需要在该目录中运行服务器,而不仅仅是在浏览器中打开您的html。 尝试在html文件所在的目录中运行python -m SimpleHTTPServer。 将您的json文件移动到您的html文件所在的位置。然后用http://localhost:8000/1099K.json替换file:///Users/as6/Downloads/1099K.json

浏览器这种方式很奇怪,它不允许你为以file:///

开头的链接做ajax