2012-07-05 125 views
0

我試圖創建一個node.js聊天應用程序,當有人加入聊天室時,我想將最後100封郵件推送到他們的瀏覽器。我有node.js添加每個聊天消息作爲一個對象與消息的用戶名和文本到數組中。當node.js推入對象數組時,它看起來像這樣。jquery - 雙括號內的對象數組

[ 
    [ 
     { 
      "username": "Warren2", 
      "text": "test1" 
     }, 
     { 
      "username": "Warren2", 
      "text": "test2" 
     }, 
     { 
      "username": "Warren2", 
      "text": "test3" 
     }, 
     { 
      "username": "Warren2", 
      "text": "hello" 
     } 
    ] 
] 

我無法解析與jQuery和我認爲jQuery是拋出錯誤,因爲對象是一組額外的括號內。我使用的創建對象的數組的代碼如下:

// chat history 
var history = []; 

// when the client emits 'sendchat', this listens and executes 
socket.on('sendchat', function (data) { 
    // we tell the client to execute 'updatechat' with 2 parameters 
    io.sockets.emit('updatechat', socket.username, data); 
    // we add the message to the chat history 
    var obj = {username:socket.username,text:data}; 
    history.push(obj); 
    history = history.slice(-100); 
}); 

上午我做錯了什麼或有什麼方法去除多餘的一套支架或用jQuery解析呢?當我登錄歷史數據的node.js被髮送給瀏覽器,它看起來像這樣的控制檯:

[Object { username="Warren2", text="test1"}, Object { username="Warren2", text="test2"}, Object { username="Warren2", text="test3"}, Object { username="Warren2", text="hello"}, Object { username="Warren", text="test"}, Object { username="Warren", text="test again"}, Object { username="Warren", text="test"}, Object { username="Warren", text="Hey"}] 
+0

如果我從歷史記錄[0]中刪除[0],它仍然有效,但仍有雙括號。如果我離開[0],我得到以下錯誤: historySlice = history [0] .slice(-100); TypeError:Object# has no method'slice' – 0xDECAFBAD 2012-07-05 16:05:54

回答

1
$.each(data, function(index,el) { 
    // el = object in array 
    // access attributes: el.Id, el.Name, etc 
}); 

在另一個計算器後發現了它。有沒有看到這之前,但解析傳入的數據後使用

var json = $.parseJSON(data); 

上述代碼工作完美。