2011-04-20 60 views
3

我无法处理从AJAX请求返回的JSON对象。使用jQuery处理JSON对象?

这是一个简单的扁平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"} 
] 
+1

它看起来像数据是一个数组。尝试数据[索引]。用户 – Hacknightly 2011-04-20 01:23:33

+0

我爱stackoverflow,我在几分钟内得到了多个答案。谢谢你们 – Cheyne 2011-04-20 01:49:19

回答

11

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

太棒了,谢谢你。虽然即时通讯获取错误:未捕获SyntaxError:body.append行上的意外标识符。有任何想法吗 ? – Cheyne 2011-04-20 01:38:17

+0

@Cheyne,你能粘贴你的确切线吗? – 2011-04-20 01:44:55

+0

$ .each(data,function(index) alert(data [index] .user); }); – Cheyne 2011-04-20 01:46:56

0

你想要的是

    $.each(data, function(index) { 
        //items.push('<li id="' + key + '">' + val + '</li>'); 
        $('body').append('<li id="' + data[index].user + '">' + data[index].user + '</li>'); 
        alert(data); 
       }); 
+0

$ .each传递数组中的项('data [index]')作为函数的第二个参数,所以你不需要像这样访问它。 – brad 2011-04-20 01:28:31

+0

我不太了解jQuery,我只是在这里说明这个问题:)但是看起来好像有很多更好的解决方案,所以...... – Ryan 2011-04-20 01:29:33