Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么$。每个都说这个JSON对象未定义?_Json_Jquery - Fatal编程技术网

为什么$。每个都说这个JSON对象未定义?

为什么$。每个都说这个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"

以下是我的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抛出错误“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数组。我的回答只是解释你为什么需要这样做。