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


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

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

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

2 95

2 ответа:

если я правильно понимаю ситуацию, вы просто передаете данные 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: / / input-это поток только для чтения, который позволяет читать raw данные из тела запроса. В случае POST-запросов предпочтительней чтобы использовать php: / / input вместо $HTTP_RAW_POST_DATA, поскольку это не так зависит от специального php.ini-директивы. Кроме того, для тех случаев, когда $HTTP_RAW_POST_DATA не заполняется по умолчанию, это потенциально менее интенсивная альтернатива активации памяти always_populate_raw_post_data. php: / / вход не доступен с помощью enctype= "multipart / form-data".

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

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

обновление

и docs говорят, что:

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

так, наверное, writer ' s конфиг.