2012-03-20 4 views
0

私は、このJSONオブジェクトがあります。jqueryでそれぞれの内部をどのように処理するのですか?

{ 
"msg_id":"134", 
"message":"Dick", 
"comment":[ 
    { 
    "com_id":"9", 
    "comment":"test", 
    "msg_id":"134", 
    }, 
    { 
    "com_id":"10", 
    "comment":"testtt", 
    "msg_id":"134", 
    }, 
    { 
    "com_id":"11", 
    "comment":"testtttt", 
    "msg_id":"134", 
    }] 
}, 
{ 
"msg_id":"134", 
"message":"Dick", 
}, 
{ 
"msg_id":"134", 
"message":"Dick", 
} 

をそして私は二回、それを反復処理しようとしています。メインのjsonオブジェクトの場合は1回、次にcommentの場合は1回です。私はa is undefined jquery.js line 2を取得し、これを行う場合は

$.each(data, function(index, obj){ 
    msg += template.replace(/{{message}}/ig , obj.message) 
        .replace(/{{msg_id}}/ig , obj.msg_id); 

    $.each(obj.comment, function(key, val){ 
      msg += template.replace(/{{comment}}/ig , val.comment) 
        .replace(/{{com_id}}/ig , val.com_id) 
        .replace(/{{msg_id}}/ig , val.msg_id);   
    }); 
}); 

は、私はこれを試してみました。たぶん、私は2番目のループの別の関数を作成する必要があります。 、インナー .each呼び出しの周り

if(obj.comment) { 
} 

すなわち、それこのようなものにする:

+0

完全なJSコード、特に2行目を公開してください:) –

+0

私はいくつかのjsonエラーを考えます。 jsonlint.com – DG3

+4

*で "私はこのjsonオブジェクトを持っています" *引用されたテキストは無効です[JSON](http://json.org)。 JSONは、**単一**のトップレベルのオブジェクト(オブジェクト、 '{...} '、または配列[...])を持たなければなりません。これはおそらくあなたが抱えている問題に関連しています。あなたが引用したものは、最初に '['があり、最後に ']があれば有効です。 [jsonlint](http://jsonlint.com)はJSONの検証に便利です。これは通常、この種の問題を診断するための第一歩です。 :-) –

答えて

4

おそらくobj.commentは(あなたが最後の二つのメッセージにコメントがありませんのでご注意)未定義され、これを追加します。

$.each(messages, function(i, msg) { 
    if(msg.comment) { 
     $.each(msg.comment, function(i, comment) { 
      $('#log').append($('<div>').text(comment.comment)); 
     }); 
    } 
}); 

の作業例:

+0

ええ、私はそれをチェックするのを忘れたように見えます。今働いているようだ。 – Patrioticcow

関連する問題