2012-07-05 3 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 # 에는 'slice'메서드가 없습니다. – 0xDECAFBAD

답변

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

또 다른 유래 포스트에 발견. 들어오는 데이터를 구문 분석하기 전에 사용하고있는 것을 보지 못했습니다.

var json = $.parseJSON(data); 

위의 코드는 완벽하게 작동했습니다.

관련 문제