0

次のjsonデータがあります。

[{"id":"1","name":"vm"},{"id":"2","name":"live"}] 

解析する必要があるコードは次のとおりです。

$.getJSON('<%= path to my method%>',function(data) {
    console.log(data);  
    $.each(data, function(i, item) {                      
                   console.log(item[i].id);
           console.log(item[i].name);
    }); //end .each

});//end getJSON.       

コンソールの結果は次のとおりです。

LOG: [{"id":"1","name":"vm"},{"id":"2","name":"live"}] 
LOG: undefined 
LOG: undefined 
SCRIPT5007: Unable to get value of the property 'id': object is null or undefined 

この投稿を見つけました: $.each を使用した Json データの jquery loop

だから私は自分のコードを次のように変更しようとしました:

function(data) {
    console.log(data);  
    $.each(data, function(i, item) {
         console.log(data[i].id);
             console.log(data[i].name);
    }); //end .each

この:

function(data) {
    console.log(data);  
    $.each(data, function(i, item) {
    console.log(item.id);
    console.log(item.name);
    }); //end .each

しかし、私はIDと名前について未定義になり続けています。

どこが間違っているのか教えてください。ありがとう。

編集1

function(data) {
       $.parseJSON(data);
       console.log(data);  
       $.each(data, function(i, item) {
             console.log(item.id);
             console.log(item.name);
        }); //end .each
4

4 に答える 4

0

これを試して:

$.each(data, function() {
    console.log(this.id);
    console.log(this.name);
});
于 2013-06-12T19:19:50.437 に答える
0

JSON は JSON オブジェクトではなく文字列として送信されるため、そのプロパティにアクセスできません。

を使用して、JSON の文字列を実際のオブジェクトにキャストします$.parseJSON()

data = $.parseJSON(data);

上記でうまくいくはずです。

JSON ソースが信頼できない可能性がある場合は、try/catch ブロックを使用して、無効な JSON が JavaScript を無効にしないようにすることをお勧めします。

try {
    data = $.parseJSON(data);
} catch(errors) {
    console.log(errors);
}

最後に、JSON のソースを制御する場合、応答のヘッダーを設定するapplication/jsonと、jQuery は応答を JSON オブジェクトに自動的にキャストする必要があります。

于 2013-06-12T19:22:30.620 に答える