如何检索请求有效负载

nku*_*hta 109 javascript php json extjs

我正在使用PHP,ExtJSajax商店.

它不在POST或GET中发送数据(在创建,更新,销毁时).在Chrome控制台中,我在" 请求有效负载 "字段中看到我的传出参数为JSON .$ _POST$ _GET都是空的.

如何在PHP中检索它?

Ikk*_*kke 237

如果我正确理解了这种情况,那么你只是将json数据传递给http体,而不是application/x-www-form-urlencoded数据.

您可以使用此代码段获取此数据:

$request_body = file_get_contents('php://input');
Run Code Online (Sandbox Code Playgroud)

如果您通过json,那么您可以:

$data = json_decode($request_body);
Run Code Online (Sandbox Code Playgroud)

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

php://input是一个所谓的包装器.

php:// input是一个只读流,允许您从请求正文中读取原始数据.在POST请求的情况下,最好使用php:// input而不是$ HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令.此外,对于默认情况下未填充$ HTTP_RAW_POST_DATA的情况,它可能是激活always_populate_raw_post_data的内存密集型替代方案.php://输入不适用于enctype ="multipart/form-data".

  • 非常感谢!我好几天都在寻找这个答案,以为我疯了. (7认同)
  • 我可以检索数据.谢谢.! (2认同)

Mol*_*Man 11

您也可以设置ExtJS的writer使用,它会定期发送数据(和,因此,你就可以通过检索数据 和).encode: true$_POST$_GET

...这些值将作为请求参数的一部分发送,而不是原始帖子(通过Ext.data.writer.Json的编码配置文档)

UPDATE

此外文档说:

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

因此,很可能writerroot配置是必需的.