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") 服务器端。

或者:

  1. 您的服务器停止设置正确的 Content-Type 响应 header (application/json)。 PHP 将声称它发送给浏览器的任何内容都是 text/html 除非您使用 header() 函数来覆盖它。
  2. 您没有说 type: 'json' 让 jQuery (a) 设置 Accept header 和(更相关)(b) 忽略响应的 Content-Type header 并尝试将其解析为 JSON 无论如何。