How to retrieve Request Payload
Solution 1
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
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.
Comments
-
nkuhta over 3 years
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?
-
nkuhta about 12 yearsI could retrieve data. Thanks. !
-
Molecular Man about 12 years@NikitaKuhta, have you set
writer
's root config? It may be required.encode
does work for me imageshack.us/f/32/20120308153201.png -
mighty007 almost 12 yearsThank you so much! I have been searching for this answer for days, and thought I was crazy.
-
Angelin Nadar over 11 yearsthe header is application/json
-
Ikke over 11 years@AngelinNadar Then this answer applies.
-
Michael J. Calkins about 11 yearsIf using Laravel simply create a helper function that 1. retrieves this string and 2. json_decodes it. Then it will be no different than an array from Input::all(); On a side not this would probably work for everyone else too.
-
tibalt over 10 yearsYou've made my day! I've been struggling with js+php for so long! Thank you very much. Sorry for offtop.