无效的JSON语法和$ .getJSON

时间:2012-11-28 03:28:36

标签: javascript jquery json

我有一个JSON文件 my.json ,其中包含以下内容:

{   
    title: "My Title",
}

并且,一个jQuery片段来阅读它:

var reading_file = $.getJSON('my.json', function (data) {
  alert('Success.');
}

回调中的 alert()永远不会被调用,因为JSON文件中存在错误,即title未包装为字符串,如"title"中所示。

在浏览器(Chrome)上运行时,这不会引发错误或任何错误指示。具体而言,my.json已正确检索(状态代码:200),但reading_file.state()始终为pending

我的问题:

  1. 有什么好方法可以捕获此类错误,即无效的JSON数据/语法?
  2. function (data) { alert ... }回调中,this指的是什么?
  3. 感谢。

1 个答案:

答案 0 :(得分:5)

来自docs

  

在jQuery 1.4中,JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝并抛出一个解析错误

您将使用错误处理程序来捕获错误。像

这样的东西
var reading_file = $.getJSON('my.json', function (data) {
  alert('Success.');
}).error(function(jqXHR, textStatus, errorThrown) {
    alert("Stop! Error time!");
});

<强>更新

Ian所述,成功回调上下文中的this 是一个Ajax事件。它似乎是传递给$.ajax()的配置对象。