我有一个从服务返回的结果集,它给了我以下json
{
"ThreadCount":61,
"GroupList":[
{"userName":"KLT","count":2687},
{"userName":"KCameron","count":718},
{"userName":"IRG","count":156},{"userName":"JLB","count":123},{"userName":"HML","count":121},{"userName":"SMN","count":99},{"userName":"TBridges","count":68},{"userName":"ARF","count":65},{"userName":"MarkGreenway","count":61},{"userName":"SMC","count":55},{"userName":"EMD","count":52},{"userName":"PKP","count":41},{"userName":"KBounds","count":36},{"userName":"MAN","count":33},{"userName":"LAC","count":17},{"userName":"EPS","count":17},{"userName":"CAN","count":7},{"userName":"MAJ","count":3},{"userName":"CPC","count":2}]
}
我想使用Jquery(或javascript将threadCount放在一个div中,并将用户名和counds添加到表中
success: function(result) {
$("#Unfiled").html(result.ThreadCount);
$.each(result.GroupList, function(user) {
$('#myTable > tbody').append(
'<tr><td>'
+ user.userName
+ '</td><td>'
+ user.count +
'</td></tr>'
);
});
}
出于某种原因,我的桌子上没有任何东西......
顺便说一句,我的HTML就在这里:
<table>
<tr>
<td>
Unfiled Emails:
</td>
<td id="Unfiled">
-1
</td>
</tr>
<tr>
<td colspan="2">
<table id="myTable" border="2" cellpadding="3" cellspacing="3">
</table>
</td>
</tr>
</table>
我知道我错过了一些简单的事情......
感谢您的提前帮助
答案 0 :(得分:42)
在提供给each
的函数内部,this
引用当前元素。试试这个:
$.each(result.GroupList, function() {
$('#myTable > tbody').append(
'<tr><td>'
+ this.userName
+ '</td><td>'
+ this.count +
'</td></tr>'
);
});
如果这对您不起作用,可能与此有关:$('#myTable > tbody')
,考虑到没有tbody
元素。我相信Internet Explorer会自动创建一个,但其他浏览器不会。检查$.support.tbody
以查看浏览器是否为您执行此操作。
答案 1 :(得分:3)
我注意到你的表实际上没有tbody元素。这可能是您问题的一部分。
$('#myTable > tbody').append.....
<table id="myTable" border="2" cellpadding="3" cellspacing="3">
</table>
我还建议您在$ .each()循环中创建一个字符串,然后在每次循环后执行以下操作:
$('#myTable > tbody').html(string);
这将减少每次迭代数组时附加的开销。
答案 2 :(得分:2)
当我使用$ .each()时,我使用了一个函数(i,item),其中i是一个表示索引的整数,item是实际的对象。这就是the documentation显示它的完成方式 - 该方法被描述为函数回调(indexInArray,valueOfElement)。