2012-02-10 92 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