如何检索请求有效负载

我使用PHPExtJSajax商店

它发送数据(在创build,更新,销毁)不在POST或GET。 在Chrome控制台中,我在“ 请求负载 ”字段中将我的传出参数显示为JSON。 $ _POST$ _GET是空的。

如何检索它在PHP中?

如果我正确地理解了这种情况,那么只需要通过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是一个所谓的包装 。

php://input是一个只读stream,允许您从请求主体读取原始数据。 在POST请求的情况下,最好使用php://input而不是$ HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。 而且,对于缺省情况下$ HTTP_RAW_POST_DATA未被填充的情况,这对于激活always_populate_raw_post_data是一个潜在的更less内存密集的select。 php://input不可用enctype =“multipart / form-data”。

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

…值将作为请求参数的一部分发送,而不是原始发布(通过用于Ext.data.writer.Json的编码configuration的文档 )

UPDATE

另外文档说:

编码选项只能在定义根目录时设置为true

所以,可能, writerrootconfiguration是必需的。