symfony3 form ajax symfony

form - Cómo obtener la solicitud de publicación de Ajax por el controlador symfony2



symfony ajax response (3)

Envio mensaje de texto como este

marcado html

<textarea id="request" cols="20" rows="4"></textarea>

código javascript

var data = {request : $(''#request'').val()}; $.ajax({ type: "POST", url: "{{ path(''acme_member_msgPost'') }}", data: data, success: function (data, dataType) { alert(data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(''Error : '' + errorThrown); } });

código del controlador symfony2

$request = $this->container->get(''request''); $text = $request->request->get(''data'');

pero $text es nulo ...

He probado la solicitud de publicación normal (no Ajax) mediante el comprobador de solicitudes http de Firefox.

/app_dev.php/member/msgPost

El controlador funciona y $text tiene un valor.

Así que creo que el código de PHP está bien, hay un problema en el lado Ajax, sin embargo

Se llama ''success: function'' como si hubiera tenido éxito.

¿Cómo se puede obtener el contenido de la estructura de datos javascript?


Lo estás haciendo mal al obtener el valor, debes usar:

$data = $request->request->get(''request'');

Porque la petición es el nombre de tu parámetro.


Primero, no necesita acceder al contenedor en su controlador, ya que ya implementa ContainerAware

Básicamente, su código debería tener este aspecto en su Controller.php

public function ajaxAction(Request $request) { $data = $request->request->get(''request''); }

Además, asegúrese de que los datos que está enviando no sean nulos mediante el uso de console.log(data) en el JS de su aplicación.

Y finalmente, la respuesta de su pregunta : no está usando la variable correcta, necesita acceder al valor de $(''#request'').val() pero la almacenó en una variable de request y usó un nombre de variable de data en su controlador

Considere cambiar el nombre de la variable, porque es confuso.


Si está enviando los datos como JSON, no como el formato urlencoded, necesita acceder al cuerpo de la solicitud directamente:

$data = json_decode($request->getContent());