How to retrieve Request Payload

我用的是 PHPExtJSAjax 商店

它发送数据(在创建,更新,销毁) ,而不是在 POST 或 GET。在 Chrome Console中,我在“ 请求有效载荷”字段中看到我的输出参数为 JSON。$_ POST$_ GET是空的。

如何在 PHP 中检索它?

119520 次浏览

如果我正确理解了这种情况,那么您只是通过 http 主体传递 json 数据,而不是 application/x-www-form-urlencoded数据。

您可以通过以下代码片段获取这些数据:

$request_body = file_get_contents('php://input');

如果你超过了 json,那么你可以做:

$data = json_decode($request_body);

然后 $data包含 json 数据是 php 数组。

php://input就是所谓的 wrapper

//input 是一个只读流,允许读取原始数据 在 POST 请求的情况下,最好使用 to use php://input instead of $HTTP_RAW_POST_DATA as it does not 依赖于特殊的 php.ini 指令 $HTTP _ RAW _ POST _ DATA 默认情况下不填充,它可能是 内存密集程度较低的激活替代方案 Always _ popular _ raw _ post _ data. php://input 不可用 Enctype = “ multipart/form-data”。

您还可以使用 encode: true设置 extJs writer,它将定期发送数据(因此,您将能够通过 $_POST$_GET检索数据)。

... the values will be sent as part of the request parameters as opposed to a raw post (via 医生 for encode config of Ext.data.writer.Json)

更新

Also 医生 say that:

只有在定义根时,才应将 encode 选项设置为 true

因此,可能需要 writerroot配置。