8

次のコードでは、読み込もうとしている JSON のどこかにわずかな構文エラーがある場合、何も表示されません。Chrome または Firefox に表示されるエラーは見つかりません。これは、解析できないことを示しています。 JSON フィールド。この try/catch でも機能しません。

JSON を解析できない場合、コードで特定の処理を行うにはどうすればよいですか?

function init() {
    elemFront = $('div.flashcard div.bodyFront');
    elemBack = $('div.flashcard div.bodyBack');
    console.log('before');
    try {
        console.log('inside try');
        $.getJSON('data.txt', function(jsonResult) {
            console.log(jsonResult);
        });
    } 
    catch(err) {
        console.log('error');
    }
    console.log('after');
}

補遺

@sagi に感謝します。JSON データの構文の問題をキャッチするコードを次に示します。

$.get('data.txt', {}, function(data, response){
    var jsonResult;
    try {
        jsonResult = JSON.parse(data);
    }
    catch (e) {
        $('div.header').html('<span style="color:red">cannot load data because: "'+e+'"</span>');
    };
    $('div.bodyFront').html(jsonResult['one']);
});
4

1 に答える 1

13

応答が不明な場合は、$.getJSON を使用しないでください。代わりに、次のようなことを行うことをお勧めします。

$.get('...', {}, function(data, response){
  var jsonResult;
  try {
    jsonResult = JSON.parse(data);
  }
  catch (e) {
    console.log("error: "+e);
  };
  // the rest of your code
});
于 2013-05-23T16:40:26.163 に答える