我有这个json对象:
{
"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对象,然后为comment
对象。
我试过了:
$.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 );
});
});
如果我这样做,我会得到a is undefined jquery.js line 2
。也许我需要为第二个循环创建另一个函数。
答案 0 :(得分:4)
可能只是obj.comment
未定义(请注意,您在最后两条消息中没有任何评论),请添加:
if(obj.comment) {
}
围绕内部.each
调用,即使它像这样:
$.each(messages, function(i, msg) {
if(msg.comment) {
$.each(msg.comment, function(i, comment) {
$('#log').append($('<div>').text(comment.comment));
});
}
});
工作示例: