为什么$。每个都说这个JSON对象未定义?
以下是我的Javascript:为什么$。每个都说这个JSON对象未定义?,json,jquery,Json,Jquery,以下是我的Javascript: $.post('foo.php', { request: Request }, function(data) { $.each(data.chats, function(i, chat) { ... }); }); 这是经过Firebug和其他所有程序验证的JSON,该代码正在接收: { "chats": [ { "chat_id": "22", "user_status"
$.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抛出错误“object is undefined”,在jquery.js的第552行有一个指向“length=object.length”的链接,并且在我运行console.log(data.chats)时显示“undefined”?一个console.log(data)显示完整的JSON响应,但出于某种原因,它不想处理数据。。。我已将错误缩小到“$.each”行
我有理由相信这是一个非常简单的错误,当有人向我指出这一点时,我会直截了当,但在这一点上,我完全困惑了。(是的,“chats”应该是一个JSON数组,用于将来处理多个聊天,与消息相同。)chats是一个JSON数组,它是一个包含JSON数组的字符串,还是一个JavaScript对象?如果是前者,您需要先将其转换为后者,然后才能开始这样使用它。从包含JSON数组的字符串的意义上讲,
chats
是JSON数组,还是从JavaScript对象的意义上讲是JSON数组?如果是前者,则需要先将其转换为后者,然后才能开始使用它。告诉它您需要的是JSON——默认情况下,它会将响应视为html
$.post('foo.php', { request: Request }, function(data)
{
$.each(data.chats, function(i, chat)
{ ... });
}, 'json');
告诉它您需要JSON——默认情况下,它会将响应视为html
$.post('foo.php', { request: Request }, function(data)
{
$.each(data.chats, function(i, chat)
{ ... });
}, 'json');
我不太明白。我发布的JSON是从服务器发送到客户机的确切内容和全部内容(为便于阅读,增加了间距),并作为“data”参数发送到函数。JSON本身是从一个带有JSON_encode()的PHP数组生成的。@Andrew-但是它没有被解释为JSON,因为您没有告诉它您需要JSON。它将其视为HTML(即字符串)而不进行解释,因为您没有提供响应类型。tvanfosson的回复中有示例代码,演示了如何使用jQuery的
post
函数将字符串自动转换为JavaScript数组。我的回答只是解释你为什么需要这样做。我不确定我是否理解。我发布的JSON是从服务器发送到客户机的确切内容和全部内容(为便于阅读,增加了间距),并作为“data”参数发送到函数。JSON本身是从一个带有JSON_encode()的PHP数组生成的。@Andrew-但是它没有被解释为JSON,因为您没有告诉它您需要JSON。它将其视为HTML(即字符串)而不进行解释,因为您没有提供响应类型。tvanfosson的回复中有示例代码,演示了如何使用jQuery的post
函数将字符串自动转换为JavaScript数组。我的回答只是解释你为什么需要这样做。