2011-04-20 84 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