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 がエラーをスローしていると思います。オブジェクトの配列を作成するために使用しているコードは次のとおりです。

// 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
});

別のスタックオーバーフローの投稿で見つけました。これが以前に使用されているのを見たことがありませんが、受信データを解析した後

var json = $.parseJSON(data);

上記のコードは完全に機能しました。

于 2012-07-05T16:42:55.903 に答える