Comment récupérer la charge utile de la demande

Je suis l'aide de PHP, ExtJS et ajax magasin.

Il envoie des données (sur create, update, destroy) pas dans POST ou GET. Dans la Console Chrome je vois mes paramètres sortants comme JSON dans le champ" Request Payload ". $_POST et $_GET sont vides.

Comment le récupérer en PHP?

95
demandé sur Sebastian Zartner 2012-03-07 10:56:28

2 réponses

Si je comprends bien la situation, vous passez simplement des données json à travers le corps http, au lieu de application/x-www-form-urlencoded data.

Vous pouvez récupérer ces données avec cet extrait:

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

Si vous passez json, alors vous pouvez faire:

$data = json_decode($request_body);

$data contient ensuite les données JSON est un tableau php.

php://input est un soi-disant wrapper .

Php: / / input est un flux en lecture seule qui vous permet de lire des données brutes à partir du corps de la requête. Dans le cas de la poste les demandes, il est préférable pour utiliser php: / / input au lieu de $HTTP_RAW_POST_DATA car ce n'est pas le cas dépend de php spécial.les directives ini. En outre, pour les cas où $ HTTP_RAW_POST_DATA n'est pas renseigné par défaut, il s'agit alternative moins gourmande en mémoire à l'activation always_populate_raw_post_data. php: / / l'entrée n'est pas disponible avec enctype = "multipart / form-data".

204
répondu Ikke 2014-04-01 13:23:26

Aussi, vous pouvez configurer extJs writer avec encode: true et il enverra régulièrement des données (et, par conséquent, vous serez en mesure de récupérer des données via $_POST et $_GET).

... les valeurs seront envoyées dans le cadre des paramètres de la requête opposé à un post brut (via docs pour encode config de Ext.données.écrivain.Json)

Mettre à jour

Aussi docs dire que:

L'option encoder ne doit être définie sur true que lorsqu'une racine est défini

Donc, probablement, la configuration root de writer est requise.

10
répondu Molecular Man 2012-03-08 13:58:28