Подтвердить что ты не робот

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 и добавить имена пользователей и фрагменты в таблицу

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>

Я знаю, что мне не хватает чего-то простого...

Спасибо за вашу помощь заранее

4b9b3361

Ответ 1

Внутри функции, предоставляемой 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, чтобы убедиться, что браузер делает это для вас.

Ответ 2

Я заметил, что в вашей таблице нет элемента tbody. Это может быть частью вашей проблемы.

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

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

Я также предложил бы создать строку в цикле $.each(), а затем после каждого цикла выполнить следующее:

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

Это уменьшит накладные расходы при добавлении при каждом повторении по массиву.

Ответ 3

Когда я использовал $.each(), я использовал функцию (i, item), где я - индекс, указывающий целое число, а элемент - фактический объект. Вот как документация показывает, что это делается - метод описывается как обратный вызов функции (indexInArray, valueOfElement).