2012-03-07 14 views
90

estoy usando PHP , ExtJS y ajax tienda.Como recuperar Solicitud de carga útil

Envía datos (en crear, actualizar, destruir) no en POST o GET. En la consola Chrome veo mis parámetros salientes como JSON en el campo "Solicitar carga útil". $ _POST y $ _GET están vacíos.

¿Cómo recuperarlo en PHP?

Respuesta

194

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

Usted puede recuperar estos datos con este fragmento:

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

Si estás de paso JSON, entonces usted puede hacer:

$data = json_decode($request_body); 

$data a continuación contiene los datos JSON es matriz PHP.

php://input es un llamado wrapper.

php: // input es una secuencia de solo lectura que le permite leer los datos brutos del cuerpo de la solicitud. En el caso de solicitudes POST, es preferible usar la entrada php: // en lugar de $ HTTP_RAW_POST_DATA, ya que no depende de según las directivas especiales php.ini. Además, para aquellos casos en los que $ HTTP_RAW_POST_DATA no se completa de manera predeterminada, es potencialmente una alternativa menos intensiva de memoria a que a la activación de always_populate_raw_post_data. La entrada php: // no está disponible con enctype = "multipart/form-data".

+1

Pude recuperar datos. Gracias. ! –

+5

¡Muchas gracias!He estado buscando esta respuesta por días, y pensé que estaba loco. – Zacho

+0

el encabezado es application/json –

9

también le puede ExtJs configuración writer con encode: true y enviará datos con regularidad (y, por lo tanto, usted será capaz de obtener información a través $_POST y $_GET).

... los valores se enviarán como parte de los parámetros de la petición como opuestos a un poste en bruto (a través de docs para config encode de Ext.data.writer.Json)

ACTUALIZACIÓN

también dicen que docs:

La opción de codificar sólo debe establecerse en cierto cuando una raíz se define

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

+0

encode: cierto - nada ha cambiado. El mismo método de envío. –

+0

@NikitaKuhta, ¿has configurado la configuración raíz de 'writer'? Puede ser requerido. 'encode' funciona para mí http://imageshack.us/f/32/20120308153201.png/ –

Cuestiones relacionadas