7

要素#the-jsonが空の場合、次のエラーが発生します。

Uncaught 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 に答える