How to retrieve Request Payload

112,143

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.

Share:
112,143
nkuhta
Author by

nkuhta

Web-developer. ExtJS + PHP

Updated on December 10, 2020

Comments

  • nkuhta
    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
    nkuhta about 12 years
    I could retrieve data. Thanks. !
  • Molecular Man
    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
    mighty007 almost 12 years
    Thank you so much! I have been searching for this answer for days, and thought I was crazy.
  • Angelin Nadar
    Angelin Nadar over 11 years
    the header is application/json
  • Ikke
    Ikke over 11 years
    @AngelinNadar Then this answer applies.
  • Michael J. Calkins
    Michael J. Calkins about 11 years
    If 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
    tibalt over 10 years
    You've made my day! I've been struggling with js+php for so long! Thank you very much. Sorry for offtop.