Как получить полезную нагрузку запроса


Я использую PHP, ExtJS и хранилище ajax.

Он отправляет данные (при создании, обновлении, уничтожении) не в POST или GET. В консоли Chrome я вижу свои исходящие параметры как JSON в поле " Запрос полезной нагрузки". $_POST и $_GET пусты.

Как получить его в PHP?

Author: Sebastian Zartner, 2012-03-07

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="составные/данные формы".

 204
Author: Ikke, 2014-04-01 13:23:26

Также вы можете настроить ExtJS writer с помощью encode: true и он будет регулярно отправлять данные (и, следовательно, вы сможете получать данные через $_POST и $_GET).

... значения будут отправлены как часть параметров запроса, в отличие от необработанной записи (через документы для кодирования конфигурации Ext.data.writer.Json)

ОБНОВЛЕНИЕ

Также документы говорят, что:

Параметр кодирования должен быть установлен в значение true только в том случае, если корень определено

Поэтому, вероятно, требуется конфигурация writer root.

 10
Author: Molecular Man, 2012-03-08 13:58:28