2012-02-10 86 views
0

我從我的數據庫中收到舊郵件時遇到了一個小問題。使用通常console.log(data.message);因爲這回來不確定,我不能利用這些信息,但是當我使用console.log(data);輸出php json數據

[{"message":"Hello","time":{"sec":1328831312,"usec":699000},"user":"4f326ef17edae18d11000000"},{"message":"Heyyy","time":{"sec":1328831324,"usec":48000},"user":"4f33a3db7edae17736000000"},{"message":"afasfasd","time":{"sec":1328831966,"usec":960000},"user":"4f33a3db7edae17736000000"},{"message":"asdfasdfasdf","time":{"sec":1328831968,"usec":283000},"user":"4f33a3db7edae17736000000"},{"message":"old message","time":{"sec":1328831969,"usec":234000},"user":"4f33a3db7edae17736000000"}] 

搜索我的數據庫中的兩個用戶,然後通過這樣的

$messages = array(); 
for($i=0; $i<count($cursor['messages']); $i++){ 
    $object = array('message'=>$cursor['messages'][$i]['message'], 
        'time'=>$cursor['messages'][$i]['time'], 
        'user'=>$cursor['messages'][$i]['user']); 

    $messages[] = $object; 
} 
echo json_encode($messages) 
數據環路之間的消息

我希望能夠獲得消息發送的用戶ID,消息和時間,以便我可以將每個消息附加到我的聊天記錄中,但是我可能會停留在輸出信息上。

回答

2

看起來您的回覆包含在數組[]中。

假定你的膏代表,你應該能夠得到在你的JS,你會想起來循環要與

data[i].message 

data[i].time.sec 

數據到data.length來檢索每個消息。

編輯:看起來你沒有在收到它後解析字符串。請嘗試以下

var parsedData; 
if(JSON && JSON.parse) { 
    parsedData = JSON.parse(data); 
} 
else { 
    parsedData = eval(data); 
} 

alert(parsedData[0].message); 
+0

我還沒有得到任何運氣努力,我不知道如何刪除,因爲我收集PHP的信息,我添加上述 – jamcoupe 2012-02-10 00:17:06

+0

@jamcoupe對不起PHP的方式包裝陣列刪除陣列不是一個好的選擇,我只是重新讀你的問題。答案在這一點上更新。 – tomfumb 2012-02-10 00:22:07

+1

@jamcoupe你實際上是反序列化文本輸出,當你在JS中接收它?你粘貼的輸出和我測試'console.log('[{「message」:「hello」}]')'是一樣的結構 - 這只是純文本,在用作對象之前需要解析 – tomfumb 2012-02-10 00:27:02