【问题标题】:jQuery $.post needs JSON response parsed manually all of a suddenjQuery $.post 突然需要手动解析 JSON 响应
【发布时间】:2026-01-24 13:35:02
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这取决于服务器的标头Content-Type: application/json,可能服务器停止发送此标头

标签: javascript jquery json ajax post


【解决方案1】:

要么:

  1. 您的服务器停止设置正确的 Content-Type 响应标头 (application/json)。 PHP 将声称它发送到浏览器的任何内容都是 text/html,除非您使用 header() 函数来覆盖它。

【讨论】:

  • 谢谢!正如您所说,我需要在任何 JSON 响应之前设置 Content-Type 标头。奇怪的是,实际上我以前从来不需要这样做。我最近所做的唯一更改是重新安装 xampp,所以它在 PHP 8 上,我只能猜测这可能是它的原因。另外值得注意的是,如果没有内容类型标头,这会大大降低我的网站速度,即使它成功处理了响应也是如此。