1

我有一个 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指的是什么?

谢谢。

4

1 回答 1

5

文档

在 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()

于 2012-11-28T03:33:44.110 回答