如何在JQuery中捕获JSON解析错误?

时间:2013-05-23 16:21:24

标签: jquery getjson

在下面的代码中,如果我试图读入的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']);
});

1 个答案:

答案 0 :(得分:12)

如果您不确定响应,则不应使用$ .getJSON,而是可能需要执行此类操作

$.get('...', {}, function(data, response){
  var jsonResult;
  try {
    jsonResult = JSON.parse(data);
  }
  catch (e) {
    console.log("error: "+e);
  };
  // the rest of your code
});