0

我正在尝试创建一个 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"}]
4

1 回答 1

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

在另一个 stackoverflow 帖子中找到它。之前没有看到这个被使用过,但是在解析传入的数据之后

var json = $.parseJSON(data);

上面的代码完美运行。

于 2012-07-05T16:42:55.903 回答