题 Jquery每个Json对象


我有一个从服务返回的结果集,它给了我以下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添加到Table

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>

我知道我错过了一些简单的事......

感谢您的帮助


18
2017-10-14 22:32


起源


您是否完全确定收到了如您所述的回复?我注意到你有未填充的计数器-1而不是61,似乎服务器返回错误的数据。 - Artem Barger
抱歉误导你Artem ...... -1是ajax发生之前的东西。 - MarkKGreenway


答案:


提供的功能里面 eachthis 指当前元素。尝试这个:

$.each(result.GroupList, function() {
    $('#myTable > tbody').append(
        '<tr><td>'
        + this.userName
        + '</td><td>'
        + this.count +
        '</td></tr>'
    );
});

如果这对您不起作用,可能与此有关: $('#myTable > tbody'),考虑到没有 tbody 元件。我相信Internet Explorer会自动创建一个,但其他浏览器不会。检查 $.support.tbody 看看浏览器是否适合你。


42
2017-10-14 22:52



对于我的解决方案,我使用了您的功能更改来使其工作。但改变桌面的html确实为我加快了速度。 - MarkKGreenway
@nickf this 解决了我的问题 - jeezyfreezy


我注意到你的表实际上没有tbody元素。这可能是您问题的一部分。

$('#myTable > tbody').append.....

<table id="myTable" border="2" cellpadding="3" cellspacing="3">
</table>

我还建议您在$ .each()循环中创建一个字符串,然后在每个循环后执行以下操作:

$('#myTable > tbody').html(string);

这将减少每次迭代数组时附加的开销。


3
2017-10-14 22:51





当我使用$ .each()时,我使用了一个函数(i,item),其中i是一个表示索引的整数,item是实际的对象。就是那样 文件 显示它正在完成 - 该方法被描述为函数回调(indexInArray,valueOfElement)。


2
2017-10-14 22:39