2

いくつかのリターンJSONデータを処理しています。

JSONは、私がアクセスできるものを返すことがあります

 var new_insert_id = data['internal']['new_insert_id'];

ただし、json配列データのこの部分がまったく返されない場合があるため、この変数の設定をスキップする必要があります。

そこで、変数を設定する前に、このデータが存在することを確認する簡単なチェックを作成しました。

 if(typeof data['internal']['new_insert_id'] != 'undefined')
 {
     // if data['internal']['new_insert_id'] is defined, then..
     var new_insert_id = data['internal']['new_insert_id'];
 }

しかし、JSONが返され、new_insert_idがない場合、次のエラーが発生します。

Uncaught TypeError: Cannot read property 'new_insert_id' of undefined 

そして、犯人としてそれが指しているコードの行は、私のifステートメントの行です。

私は何が欠けていますか?私のifステートメントはそれが存在するかどうかをチェックするだろうと思いましたか、それとも配列を操作するときに何か他のことをする必要がありますか?

4

6 に答える 6

4

さらに、最初にの存在を確認できますが、 pythonicdata['internal']の方法を使用することもできます。つまり、ブロックを適用します。try/catch

try {
    var new_insert_id = data['internal']['new_insert_id'];
} catch (e) {}
于 2013-02-27T12:44:42.420 に答える
2

作成したステートメントは、new_insert_idプロパティが「internal」に存在するかどうかをチェックしますが、「internal」がdata変数に存在するかどうかはチェックしません。これはうまくいくはずです:

if(typeof data['internal'] != 'undefined' && typeof data['internal']['new_insert_id'] != 'undefined')
{
     var new_insert_id = data['internal']['new_insert_id'];
}
于 2013-02-27T12:45:35.493 に答える
2

エラーメッセージは、それdata['internal']はすでに定義されていないことを示しています。あなたは前にそれをチェックする必要があります:

if(typeof(data['internal']) != 'undefined' && typeof data['internal']['new_insert_id'] != 'undefined')
于 2013-02-27T12:45:36.553 に答える
2

最初に確認する必要がありますdata['internal'] !== undefined:)

于 2013-02-27T12:45:38.973 に答える
2

['new_insert_id']テストでは、のプロパティが未定義であるかどうかをテストしていますが、data['internal']が未定義であるためにアクセスに問題data['internal']があり、エラーが発生します。

最初に、data['internal']が未定義かどうかを確認する必要があります。

于 2013-02-27T12:46:12.560 に答える
2

data['internal']未定義だからだと思います。

data['internal']したがって、最初に確認する必要があります。

if(data['internal'] && data['internal']['new_insert_id'])
 {
     // if data['internal']['new_insert_id'] is defined, then..
     var new_insert_id = data['internal']['new_insert_id'];
 }
于 2013-02-27T12:46:18.913 に答える