处理错误如果元素#the-json
为空,将导致此错误:坏掉的JSON
Uncaught SyntaxError: Unexpected end of input
对于下面的代码:
myJSON = JSON.parse($("#the-json").attr('value'));
如何把这个错误进行处理,因此不停止整个脚本的工作?
处理错误如果元素#the-json
为空,将导致此错误:坏掉的JSON
Uncaught SyntaxError: Unexpected end of input
对于下面的代码:
myJSON = JSON.parse($("#the-json").attr('value'));
如何把这个错误进行处理,因此不停止整个脚本的工作?
使用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对象。
'try'和'catch' – Petah 2012-07-29 10:12:31