Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Jquery $.getJSON未检索文件_Jquery_Json_Getjson - Fatal编程技术网

Jquery $.getJSON未检索文件

Jquery $.getJSON未检索文件,jquery,json,getjson,Jquery,Json,Getjson,我有以下脚本,其最终目的是获取本地JSON文件并用其内容填充列表。问题是永远不会检索该文件,而是调用fail函数,令人困惑的是,该函数的参数包含JSON文件的内容,即“responseText”。有什么好处 在最坏的情况下,我可以将responseText转换为JSON对象,然后用它来填充我的列表,但我更想弄清楚为什么它不能按预期的方式工作 $( function() { $.getJSON("public/data/opps.json", function(data) { consol

我有以下脚本,其最终目的是获取本地JSON文件并用其内容填充列表。问题是永远不会检索该文件,而是调用fail函数,令人困惑的是,该函数的参数包含JSON文件的内容,即“responseText”。有什么好处

在最坏的情况下,我可以将responseText转换为JSON对象,然后用它来填充我的列表,但我更想弄清楚为什么它不能按预期的方式工作

$( function() {
$.getJSON("public/data/opps.json", function(data) {
    console.log(data); // Never executes
})
  .fail(function(msg) {
      console.log(msg['responseText']); // Prints the contents of opps.json as a string
  });
});

问题是opps.json不是有效的json文件

当我尝试您的代码并确保内容是JSON时,它起了作用。例如,如果opps.json是:

[1,2,3]
一切正常。但是,如果是这样的:

xyz
然后它失败了


另外,在.fail(例如:console.log('fail'))中添加一条不同的消息,以确保出现故障,这样您就可以看到发生了什么。

我认为您的JSON文件很可能无效,例如,存在语法错误。这一点也在以下章节中提到:

要点:从jQuery1.4开始,如果JSON文件包含语法错误, 请求通常会无声地失败。避免频繁手工编辑 基于这个原因,JSON数据。JSON是一种数据交换格式,具有 比JavaScript对象的语法规则更严格的语法规则 文字符号。例如,JSON中表示的所有字符串, 无论它们是属性还是值,都必须包含在 双引号。有关JSON格式的详细信息,请参阅


简而言之,jQuery将尝试解析使用。如果失败,那么它将把无效的JSON传递给
fail
处理程序,而不是
success
处理程序。

只是为了澄清。你是说fail函数正确返回了文件的内容?你查过网络了吗?也许你返回了一个不正确的mime类型,你没有得到200,但你仍然得到了内容。另外,请显示opp.json的内容。json文件中存在语法错误。这就是它在fail函数中作为字符串返回的原因。