2012-07-03 91 views
0

我想用socket.io創建我的第一個node.js程序,並且我想存儲聊天記錄,然後當用戶加入聊天記錄時將其推送到他的瀏覽器。我有聊天節約和推動,並且在發送JSON看起來是這樣的:如何用jquery解析這個json?

[ 
    [ 
     { 
      "username": "Warren2", 
      "text": "Test" 
     }, 
     { 
      "username": "Warren2", 
      "text": "Test2" 
     }, 
     { 
      "username": "Warren2", 
      "text": "Test3" 
     } 
    ] 
] 

在我的html頁面我有了這個

socket.on('updatehistory', function(data) { 

} 

,我擺在那裏將代碼一個javascript當更新歷史消息被按下時被執行。我是一個n00b,相當迷失哈哈。這是我的嘗試:

socket.on('updatehistory', function (data) { 
    $.each(json.results, function(username,text){ 
     $('#conversation').append('<b>'+ username + ':</b> ' + text + '<br>'); 
    }); 
}); 

這是Node.js的

debug - websocket writing 5:::{"name":"updatehistory","args":[[{"username":"W 
arren2","text":"Test"},{"username":"Warren2","text":"Test2"},{"username":"Warren 
2","text":"Test3"}]]} 

有人可以幫助我弄清楚如何解析(最好用jQuery)爲updatehistory事件的確切調試消息。 謝謝:d

+0

你可以使用Jquery插件,例如像這樣的smth:http://code.google.com/p/jquery-json/ – avasin

+0

或者看看那裏,有這樣的插件的集合:) http:// www.jquery4u.com/json/15-jquery-json-plugins/ – avasin

+0

在完成所有功能後,您是否收到數據? –

回答

0
+0

我得到「JSON.parse:意想不到的字符」我認爲有一些額外的括號圍繞導致我的問題的一切。不知道該如何處理。 – 0xDECAFBAD

+0

嘗試用不同的工具(php/perl /快速測試附近的任何東西)來擦除您的JSON。也許JSON無效?我在很多網站上使用過這個庫..從來沒有這樣的錯誤.. – avasin

0

,如果你想自己和它只是一個5行做這一切我會給你一個方法來遍歷數據code.Here而來的第一個。我已經提醒用戶名和密碼,告訴你它實際上在樣本中有效。

http://jsfiddle.net/shivkumarganesh/gfff5/

$(document).ready(function(){ 
     var k=[ 
    [ 
     { 
      "username": "Warren1", 
      "text": "Test" 
     }, 
     { 
      "username": "Warren2", 
      "text": "Test2" 
     }, 
     { 
      "username": "Warren3", 
      "text": "Test3" 
     } 
    ] 
]; 

for(i in k) 
    { 
    var l=k[i]; 
    for (j in l) 
    { 
     alert("Username:"+l[j].username+" -- Message:"+l[j].text); 
    } 
    }​ 
    }); 

既不JSON.parse()也不$.parseJson是working.So我認爲這是最好的解決方案。

+0

我將如何刪除額外的一組括號? json是我從node.js得到的 – 0xDECAFBAD

+0

當我將輸入從node.js記錄到控制檯時,我得到了 [Object {username =「Warren2」,text =「test1」},Object {username =「Warren2」, text =「test2」},Object {username =「Warren2」,text =「test3」}] – 0xDECAFBAD

+0

@ 0xDECAFBAD我已經解決了您的問題,現在無需編輯代碼。您可以直接輸入相同的字符串。我已經更新了小提琴中的代碼以及上面的答案。這是小提琴鏈接http://jsfiddle.net/shivkumarganesh/gfff5/ –