Обработка объекта JSON с помощью jQuery? - PullRequest
3 голосов
/ 20 апреля 2011

У меня проблемы с обработкой объекта JSON, который я получаю по запросу AJAX.

Это простой плоский объект JSON, и все, что я хочу сделать, это записать ответы обратно на страницу.

Может кто-нибудь указать, как зациклить эти объекты и вывести значения? Я просто продолжаю получать [undefined] или [object] написано

Код здесь:

$.ajax({  
          type: "POST",  
          url: "func/chatResponse.php",  
          data: dataString,  
          success: function() {  
            $.getJSON('func/chatResponse.php?a=jsonLatest', function(data) {
                $.each(data, function(index) {
                    //items.push('<li id="' + key + '">' + val + '</li>');
                    $('body').append('<li id="' + data.user + '">' + data.user + '</li>');
                    alert(data);
                 });
            });
            alert("done");
          }  
        });  

образец JSON здесь

[
    {"user":"someguy","message":"my message","timestamp":"2011-04-19 17:26:09"},
    {"user":"Cheyne","message":"Hey There ...  Nice site","timestamp":"2011-04-19 17:26:09"}
]

Ответы [ 2 ]

12 голосов
/ 20 апреля 2011

data - это массив , в то время как вы хотите, чтобы элементы внутри массива .

$.each не меняет data, чтобы стать элементами, вместо этого он передает отдельные элементы в качестве второго параметра функции, которую вы предоставляете:

$.each(data, function (index, item) {
    // Use item in here
    $('body').append('<li id="' + item.user + '">' + item.user + '</li>');
});

В качестве альтернативы вы можете использовать data[index]:

$.each(data, function (index) {
    // use data[index] in here
    $('body').append('<li id="' + data[index].user + '">' + data[index].user + '</li>');
});

Кстати, избегайте уродливой конкатенации строк с помощью:

$('<li>', {id: item.user, text: item.user}).appendTo('body');
0 голосов
/ 20 апреля 2011

То, что вы хотите, это

                 $.each(data, function(index) {
                    //items.push('<li id="' + key + '">' + val + '</li>');
                    $('body').append('<li id="' + data[index].user + '">' + data[index].user + '</li>');
                    alert(data);
                 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...