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?
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".
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.
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