【发布时间】:2012-07-27 08:20:27
【问题描述】:
如果元素#the-json 为空,则会导致此错误:
Uncaught SyntaxError: Unexpected end of input
对于以下代码:
myJSON = JSON.parse($("#the-json").attr('value'));
应该如何处理这个错误,这样它才不会停止整个脚本的工作?
【问题讨论】:
标签: javascript jquery json exception
如果元素#the-json 为空,则会导致此错误:
Uncaught SyntaxError: Unexpected end of input
对于以下代码:
myJSON = JSON.parse($("#the-json").attr('value'));
应该如何处理这个错误,这样它才不会停止整个脚本的工作?
【问题讨论】:
标签: javascript jquery json exception
使用 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'));
}
【讨论】:
而不是在错误发生时捕获错误 - 首先防止错误发生! 只需测试 value 属性,如果它为空 - 明确指定它是。然后你的 JSON 解析器不会抱怨 - 它只会创建一个空对象。
您可以简单地测试空内容并提供一个空对象 -
var data = $("#the-json").attr('value') == ''? '{}': $("#the-json").attr('value');
myJSON = JSON.parse(data);
if ($.isEmptyObject(myJSON)){
// there was no value
}
{} 语法意味着一个空的 JavaScript 对象。
【讨论】: