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

Я использую PHP, ExtJS и ajax store.

Он отправляет данные (при создании, обновлении, уничтожении) не в POST или GET. В Консоль Chrome я вижу мои исходящие параметры как JSON в поле Request Payload. $_ POST и $_ GET пусты.

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

Ответ 1

Если я правильно понимаю ситуацию, вы просто передаете данные 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 - это так называемый wrapper.

php://input - поток, доступный только для чтения, который позволяет вам читать исходные данные от органа запроса. В случае запросов POST предпочтительнее использовать вход php://вместо $HTTP_RAW_POST_DATA, поскольку он не зависят от специальных директив php.ini. Более того, для тех случаев, когда $HTTP_RAW_POST_DATA по умолчанию не заполняется, это потенциально менее энергоемкая альтернатива активации always_populate_raw_post_data. php://ввод недоступен с ENCTYPE = "многочастному/форм-данных".

Ответ 2

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

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

ОБНОВЛЕНИЕ

Также docs говорит, что:

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

Итак, возможно, требуется writer root config.