【问题标题】:not getting POST data with application/json没有使用 application/json 获取 POST 数据
【发布时间】:2015-09-27 12:50:39
【问题描述】:

我正在使用 Backbone、PHP(5.6) 和 Apache(2.4)。

问题:使用 Backbone 的 model.save() 发布数据时,服务器上的 $_POST 数组为空。

我知道解决此问题的不同方法。

客户端方式:Backbone.emulateJSON 设置为 true 或更改 Backbone 源。
服务器方式: 读取原始正文而不是$_POST。

这些工作,但他们感觉像黑客,事实上他们最终有点不方便。
另外,Backbone 的文档说:

如果您正在使用无法处理编码为 application/json 的请求的旧版 Web 服务器,请设置 Backbone.emulateJSON = true;会[修复它]。

所以这听起来像是服务器问题。如何使我的服务器成为非旧版服务器?

【问题讨论】:

  • 这是因为您无法处理 PUT 和 DELETE 方法吗?可能重复stackoverflow.com/questions/9816274/…
  • 谢谢,但我不相信这有关系。
  • 你检查 $_SERVER['REQUEST_METHOD'] 了吗?如果不是 POST,我认为不会填充 $_POST。
  • @galki PHP 中没有内置方法可以访问 JSON 帖子(除了读取原始数据)。要么使用像 Symfony 这样的库/框架来完成工作,要么推出自己的解决方案stackoverflow.com/questions/10930789/…
  • PHP 不处理 Content-Type: application/json afaik。 - 见 herehere - 一些像 Symfony 2 中的请求处理程序似乎可以通过 iirc 处理它。

标签: php ajax json backbone.js


【解决方案1】:

感谢 cmets,我意识到这是正确的行为。

$_POST 用于表单数据,而 json 数据(应用程序/json)应从原始输入中获​​取。

【讨论】:

  • 要获得raw input,您需要file_get_contents("php://input");
猜你喜欢
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多