我正在尝试创建一个node.js聊天应用程序,当有人加入聊天室时,我想将最后100条消息推送到他们的浏览器。我有node.js将每个聊天消息添加为一个对象,并将消息的用户名和文本放入一个数组中。当node.js推送对象数组时,它看起来像这样。
[
[
{
"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 :(得分:1)
$.each(data, function(index,el) {
// el = object in array
// access attributes: el.Id, el.Name, etc
});
在另一个stackoverflow帖子中找到它。 Haven在使用
解析传入数据之前看到过这种情况var json = $.parseJSON(data);
以上代码完美无缺。