Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用application/json获取POST数据_Php_Ajax_Json_Backbone.js - Fatal编程技术网

Php 无法使用application/json获取POST数据

Php 无法使用application/json获取POST数据,php,ajax,json,backbone.js,Php,Ajax,Json,Backbone.js,我使用的是主干网、PHP(5.6)和Apache(2.4) 问题:使用主干网的model.save()发布数据时,服务器上的$\u POST数组为空 我知道解决这个问题的不同方法 客户端方式:将Backbone.emulateJSON设置为true或更改主干源。 服务器方式:读取原始正文而不是$u POST 这些方法很有效,但它们感觉像黑客,事实上,它们最终有点不方便此外,主干网的医生说: 如果您使用的旧web服务器无法处理编码为application/json的请求,请将Backbone.em

我使用的是主干网、PHP(5.6)和Apache(2.4)

问题:使用主干网的model.save()发布数据时,服务器上的$\u POST数组为空

我知道解决这个问题的不同方法

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

这些方法很有效,但它们感觉像黑客,事实上,它们最终有点不方便
此外,主干网的医生说:

如果您使用的旧web服务器无法处理编码为application/json的请求,请将Backbone.emulateJSON=true;我会[修好它]


这听起来像是服务器问题。如何使我的服务器成为非传统服务器?

多亏了这些评论,我意识到这是正确的行为


$\u POST用于表单数据,而json数据(application/json)应该从原始输入中获取。

这是因为您无法处理PUT和DELETE方法吗?可能是重复的谢谢,但我不相信这是相关的。您是否检查了$\u服务器['REQUEST\u METHOD']?如果不是POST,我认为不会填充$\u POST。@galki PHP中没有内置的方法来访问JSON POST(除了读取原始数据)。要么使用像Symfony这样的库/框架来完成工作,要么推出自己的解决方案PHP不处理内容类型:application/json afaik。-请参阅和-一些像Symfony 2中的请求处理程序似乎通过iirc来处理它。要获取
原始输入
,您需要
文件获取内容(“php://input");