Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON解析文件路径_Javascript_Jquery_Json_Parsing - Fatal编程技术网

Javascript JSON解析文件路径

Javascript JSON解析文件路径,javascript,jquery,json,parsing,Javascript,Jquery,Json,Parsing,我一直在尝试获取本地文件的正确路径。我有以下目录: Resources -> data -> file.json js -> folder -> script.js html -> folder -> file1.html 我正在从file1.html执行script.js,js代码为: var answers = JSON.parse('../../data/file.

我一直在尝试获取本地文件的正确路径。我有以下目录:

Resources ->
   data ->
       file.json
   js ->
     folder ->
        script.js
   html ->
      folder ->
         file1.html
我正在从
file1.html
执行
script.js
,js代码为:

var answers = JSON.parse('../../data/file.json');
alert(answers);
但它不起作用,甚至警报也没有启动。 怎么了

我也试过这个:

function readJSON(file) {
    var request = new XMLHttpRequest();
    request.open('GET', file, false);
    request.send(null);
    if (request.status == 200)
        return request.responseText;
};

var temp = readJSON('../../data/file.json');
alert(temp);

警报在这种情况下未定义。

由于它位于目录
data/
中,您需要执行以下操作:

文件路径为“
”../../data/file.json”

$.getJSON('../../data/file.json', function(data) {         
    alert(data);
});
纯JS:

   var request = new XMLHttpRequest();
   request.open("GET", "../../data/file.json", false);
   request.send(null)
   var my_JSON_object = JSON.parse(request.responseText);
   alert (my_JSON_object.result[0]);

如果
Resources
是根路径,那么访问
file.json
的最佳方式是通过
/data/file.json

用这样的东西

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

此解决方案使用异步调用。它可能比同步解决方案工作得更好

var request = new XMLHttpRequest();
request.open("GET", "../../data/file.json", false);
request.send(null);
request.onreadystatechange = function() {
  if ( request.readyState === 4 && request.status === 200 ) {
    var my_JSON_object = JSON.parse(request.responseText);
    console.log(my_JSON_object);
  }
}
var-request=new-XMLHttpRequest();
打开(“获取”、“获取”、“错误”);
请求发送(空);
var jsonData=JSON.parse(request.responseText);

此代码对我有效。

我的工作代码是:

var request = new XMLHttpRequest();
request.open("GET", "<path_to_file>", false);
request.overrideMimeType("application/json");
request.send(null);
var jsonData = JSON.parse(request.responseText);
console.log(jsonData);
var-request=new-XMLHttpRequest();
打开(“获取”、“获取”、“错误”);
请求。重写emimetype(“应用程序/json”);
请求发送(空);
var jsonData=JSON.parse(request.responseText);
console.log(jsonData);

我不知道您可以将URI传递给
JSON.parse
并让它为您执行
请求
,该文件记录在哪里?是的。。编辑正在进行中。。猜测应该在您的纯js警报未启动后回答,因为alsoXMLHttpRequest无法加载file:///.../data.json. 跨源请求仅支持协议方案:http、data、chrome、chrome扩展、https、chrome扩展资源。在本地开发时,我会收到相同的
XMLHttpRequest
错误。是否有任何非网络调用来加载本地JSON文件并解析它以便在客户端JavaScript中使用?实际上,我是在Tianium webview中创建的,所以通常资源应该是根路径。如果我使用document.location.pathname并在浏览器中启动,我肯定会得到文件://…
未定义的警报。
,状态是什么,
是否在控制台中产生错误?最后,
如果(request.status==200)
为我制造了问题。即使找到该文件,它也会给出0。如果我删除它,一切都好。谢谢大家!欢迎来到SO。回答得好。我编辑了它,因为它是最好的答案时,独立。关于其他答案的对话在评论中是合适的。主线程上的同步XMLHttpRequest不推荐使用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请选中。@evorl将第2行中的false更改为true。否则,这是一个同步操作。
var request = new XMLHttpRequest();
request.open("GET", "<path_to_file>", false);
request.overrideMimeType("application/json");
request.send(null);
var jsonData = JSON.parse(request.responseText);
console.log(jsonData);