我正在使用 PHP , ExtJS 和 ajax商店。
它不在POST或GET中发送数据(在创建,更新,销毁时)。在 Chrome控制台中,我在“请求有效负载”字段中看到我的传出参数为JSON。 $ _ POST 和 $ _ GET 为空。
如何在PHP中检索它?
答案 0 :(得分:225)
如果我理解了这种情况,你只是通过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。
php:// input是一个只读流,允许您读取原始数据 来自请求机构。在POST请求的情况下,它是可取的 使用php://输入而不是$ HTTP_RAW_POST_DATA,因为它没有 依赖于特殊的php.ini指令。而且,对于那些情况 默认情况下不会填充$ HTTP_RAW_POST_DATA,它是潜在的 激活的内存密集程度较低 always_populate_raw_post_data。 php://输入不可用 ENCTYPE = “多部分/格式数据”。
答案 1 :(得分:11)