1

次の内容の JSON ファイルmy.jsonがあります。

{   
    title: "My Title",
}

そして、それを読むための jQuery スニペット:

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

JSON ファイルにエラーがあるため、コールバック内のalert()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 に答える