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