这是我的Javascript:
$.post('foo.php', { request: Request }, function(data)
{
$.each(data.chats, function(i, chat)
{ ... });
});
以下是由Firebug和其他所有内容验证的JSON,此代码正在接收:
{
"chats": [
{
"chat_id": "22",
"user_status": "Listening",
"user_ping": "2010-06-22 15:53:57",
"messages": [
{
"chat_id": "22",
"line_id": "5",
"message": "Hello",
"timestamp": "15:53"
}
]
}
]
}
...为什么,当我运行它时,它不起作用,并且Firebug抛出“对象未定义”的错误,并在jquery.js的第552行链接到“length = object.length” ,当我执行console.log(data.chats)时显示'undefined'? console.log(数据)显示完整的JSON响应,但由于某种原因它不想处理data.chats ...我已经缩小了'$ .each'行的错误。
我有理由相信这是一个非常简单的错误,当有人向我指出时我会面对,但在这一点上我完全糊涂了。 (是的,“聊天”应该是一个JSON数组,以便将来处理多个聊天,与消息相同。)
答案 0 :(得分:6)
告诉它您期待JSON - 默认情况下它会将响应视为html。
$.post('foo.php', { request: Request }, function(data)
{
$.each(data.chats, function(i, chat)
{ ... });
}, 'json');
答案 1 :(得分:2)
chats
是一个JSON数组,因为它是一个包含JSON数组的字符串,或者它是一个JavaScript对象?如果它是前者,你需要将它转换成后者才能开始使用它。