7

如果元素#the-json为空,则会导致此错误:

未捕获的 SyntaxError:输入意外结束

对于以下代码:

myJSON = JSON.parse($("#the-json").attr('value'));

应该如何处理这个错误,这样它就不会停止整个脚本的工作?

4

2 回答 2

11

使用 try-catch 语句:

try {
  myJSON = JSON.parse($("#the-json").attr('value'));
} catch (e) {
  // handle error
}

或者在做某事之前检查:

var myJSON = JSON.parse('{}'); // default value

if ($("#the-json").attr('value')) {
  myJSON = JSON.parse($("#the-json").attr('value'));
}
于 2012-07-29T10:13:38.163 回答
3

而不是在错误发生时捕捉错误 -首先防止错误发生! 只需测试 value 属性,如果它为空 - 明确指定它是。然后你的 JSON 解析器不会抱怨——它只会创建一个空对象。

您可以简单地测试空内容并提供一个空对象 -

var data = $("#the-json").attr('value') == ''? '{}': $("#the-json").attr('value');
myJSON = JSON.parse(data);
if ($.isEmptyObject(myJSON)){
  // there was no value
}

{}语法意味着一个空的 JavaScript 对象。

于 2012-07-29T10:15:32.150 回答