Как получить полезную нагрузку запроса
Я использую PHP, ExtJS и хранилище ajax.
Он отправляет данные (при создании, обновлении, уничтожении) не в POST или GET. В консоли Chrome я вижу свои исходящие параметры как JSON в поле " Запрос полезной нагрузки". $_POST и $_GET пусты.
Как получить его в PHP?
2 answers
Если я правильно понимаю ситуацию, вы просто передаете данные json через тело http вместо данных application/x-www-form-urlencoded
.
Вы можете получить эти данные с помощью этого фрагмента:
$request_body = file_get_contents('php://input');
Если вы передаете json, то вы можете сделать:
$data = json_decode($request_body);
$data
затем содержит данные json - это массив php.
php://input
является так называемой оболочкой.
Php://ввод - это поток только для чтения, который позволяет считывать необработанные данные из тела запроса. В случае СООБЩЕНИЯ запросы, предпочтительнее использовать php://ввод вместо $HTTP_RAW_POST_DATA, так как это не зависит от специальных директив php.ini. Более того, для тех случаев, когда $HTTP_RAW_POST_DATA не заполняется по умолчанию, это потенциально менее требовательная к памяти альтернатива активации always_populate_raw_post_data. php://ввод недоступен с enctype="составные/данные формы".
Также вы можете настроить ExtJS writer
с помощью encode
: true
и он будет регулярно отправлять данные (и, следовательно, вы сможете получать данные через $_POST
и $_GET
).
... значения будут отправлены как часть параметров запроса, в отличие от необработанной записи (через документы для кодирования конфигурации Ext.data.writer.Json)
ОБНОВЛЕНИЕ
Также документы говорят, что:
Параметр кодирования должен быть установлен в значение true только в том случае, если корень определено
Поэтому, вероятно, требуется конфигурация writer
root
.