How to retrieve Request Payload

PhpJavascriptJsonExtjs

Php Problem Overview


I'm using PHP, ExtJS and ajax store.

It sends data (on create, update, destroy) not in POST or GET. In the Chrome Console I see my outgoing params as JSON in the "Request Payload" field. $_POST and $_GET are empty.

How to retrieve it in PHP?

Php Solutions


Solution 1 - Php

If I understand the situation correctly, you are just passing json data through the http body, instead of application/x-www-form-urlencoded data.

You can fetch this data with this snippet:

$request_body = file_get_contents('php://input');

If you are passing json, then you can do:

$data = json_decode($request_body);

$data then contains the json data is php array.

php://input is a so called wrapper.

> php://input is a read-only stream that allows you to read raw data > from the request body. In the case of POST requests, it is preferable > to use php://input instead of $HTTP_RAW_POST_DATA as it does not > depend on special php.ini directives. Moreover, for those cases where > $HTTP_RAW_POST_DATA is not populated by default, it is a potentially > less memory intensive alternative to activating > always_populate_raw_post_data. php://input is not available with > enctype="multipart/form-data".

Solution 2 - Php

Also you can setup extJs writer with encode: true and it will send data regularly (and, hence, you will be able to retrieve data via $_POST and $_GET).

> ... the values will be sent as part of the request parameters as > opposed to a raw post (via docs for encode config of Ext.data.writer.Json)

UPDATE

Also docs say that:

> The encode option should only be set to true when a root is defined

So, probably, writer's root config is required.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnkuhtaView Question on Stackoverflow
Solution 1 - PhpIkkeView Answer on Stackoverflow
Solution 2 - PhpMolecular ManView Answer on Stackoverflow