【问题标题】:$.getJSON is not retrieving file$.getJSON 没有检索文件
【发布时间】:2014-03-06 01:47:53
【问题描述】:

我有以下脚本,其最终目的是获取本地 JSON 文件并使用其内容填充列表。问题是该文件永远不会被检索,而是调用了失败函数,而且令人费解的是,该函数的参数包含 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
  });
});

【问题讨论】:

  • 只是为了澄清。你是说失败函数正确返回文件的内容?你检查过网络吗?也许您返回了不正确的 mime 类型并且您没有获得 200,但您仍然获得了内容。还请显示 opp.json 的内容。
  • JSON 文件中存在语法错误。这就是为什么它在失败函数中作为字符串返回。

标签: jquery json getjson


【解决方案1】:

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

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

[1,2,3]

一切都按预期进行。但是,如果是这样的:

xyz

然后它失败了。

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

【讨论】:

    【解决方案2】:

    我认为您的 JSON 文件很可能无效,例如有语法错误。 jQuery's documentation 也提到了这一点:

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

    简而言之,jQuery 将尝试解析使用 $.parseJSON() 检索到的 JSON。如果失败,那么它会将无效的 JSON 传递给 fail 处理程序,而不是 success 处理程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2011-02-12
      • 2019-05-03
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多