Cómo recuperar la carga útil de la solicitud


Estoy usando PHP, ExtJS y ajax tienda.

Envía datos (al crear, actualizar, destruir) no en POST o GET. En el Chrome Console veo mis parámetros salientes como JSON en el campo " Request Payload". $_POST y $_GET están vacías.

¿Cómo recuperarlo en PHP?

Author: Sebastian Zartner, 2012-03-07

2 answers

Si entiendo la situación correctamente, solo está pasando datos json a través del cuerpo http, en lugar de datos application/x-www-form-urlencoded.

Puede obtener estos datos con este fragmento:

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

Si usted está pasando json, entonces usted puede hacer:

$data = json_decode($request_body);

$data a continuación, contiene la matriz json data is php.

php://input es una envoltura llamada .

Php: / / input es un flujo de solo lectura que le permite leer datos sin procesar del cuerpo de solicitud. En el caso del CORREO solicitudes, es preferible para usar php: / / input en lugar de HTT HTTP_RAW_POST_DATA ya que no lo hace depende de php especial.directivas ini. Además, para los casos en que HTT HTTP_RAW_POST_DATA no se rellena por defecto, es un potencial menos memoria intensiva alternativa a la activación always_populate_raw_post_data. php: / / la entrada no está disponible con enctype= "multipart / form-data".

 204
Author: Ikke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-01 13:23:26

También puede configurar ExtJS writer con encode: true y enviará datos regularmente (y, por lo tanto, podrá recuperar datos a través de $_POST y $_GET).

... los valores se enviarán como parte de los parámetros de la solicitud como opuesto a un post sin procesar (vía docs para codificar la configuración de Ext.datos.escritor.Json)

ACTUALIZAR

También los documentos dicen que:

La opción codificar solo debe establecerse en true cuando una raíz es definido

Así que, probablemente, writer's root se requiere configuración.

 10
Author: Molecular Man,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-08 13:58:28