jQuery $.post 突然需要 JSON 手动解析响应
jQuery $.post needs JSON response parsed manually all of a sudden
我正在使用 jQuery 的 $.post
方法调用服务器并将 JSON 响应分配给名为 result
的变量。响应是 PHP 的 json_encode()
函数中的一个数组。
到目前为止,我一直只是直接使用 result
的属性,因为 JSON 会自动解析为一个对象。但是现在,经过一些调试,我发现我的代码只有在我首先使用 JSON.parse(result)
时才有效。
是什么导致了这种突然的变化?
解决方案: 在回显 JSON 编码响应时添加 header("Content-Type: application/json")
服务器端。
或者:
- 您的服务器停止设置正确的
Content-Type
响应 header (application/json
)。 PHP 将声称它发送给浏览器的任何内容都是 text/html
除非您使用 header()
函数来覆盖它。
- 您没有说
type: 'json'
让 jQuery (a) 设置 Accept
header 和(更相关)(b) 忽略响应的 Content-Type
header 并尝试将其解析为 JSON 无论如何。
我正在使用 jQuery 的 $.post
方法调用服务器并将 JSON 响应分配给名为 result
的变量。响应是 PHP 的 json_encode()
函数中的一个数组。
到目前为止,我一直只是直接使用 result
的属性,因为 JSON 会自动解析为一个对象。但是现在,经过一些调试,我发现我的代码只有在我首先使用 JSON.parse(result)
时才有效。
是什么导致了这种突然的变化?
解决方案: 在回显 JSON 编码响应时添加 header("Content-Type: application/json")
服务器端。
或者:
- 您的服务器停止设置正确的
Content-Type
响应 header (application/json
)。 PHP 将声称它发送给浏览器的任何内容都是text/html
除非您使用header()
函数来覆盖它。 - 您没有说
type: 'json'
让 jQuery (a) 设置Accept
header 和(更相关)(b) 忽略响应的Content-Type
header 并尝试将其解析为 JSON 无论如何。