jQuery $.post 突然需要手动解析 JSON 响应

Gre*_*207 1 javascript ajax jquery post json

我使用 jQuery 的方法调用服务器$.post并将 JSON 响应分配给名为 的变量result。PHP 函数中的响应是一个数组json_encode()

到目前为止,我总是result直接使用 的属性,因为 JSON 会自动解析为对象。但现在,经过一些调试,我发现我的代码只有在我JSON.parse(result)第一次使用时才有效。

是什么导致了这种突然的变化?

解决方案:header("Content-Type: application/json")在回显 JSON 编码响应时添加服务器端。

Que*_*tin 6

任何一个:

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