2013-09-16 2 views
17

я отправить текстовое сообщение, как этотКак получить запрос после Ajax на Symfony2 контроллер

в HTML

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

В 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); 
      } 

Я написал код в Symfony2 Contololler

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

, но $ t ext is null .....

Я пробовал обычный почтовый запрос (не Ajax) от firefox http request tester.

/app_dev.php/member/msgPost

Контроллер работает и $ текста имеет значение.

Так что я думаю, что PHP код в порядке, есть проблема на стороне Ajax, однако

«успех: функция» называется, как если бы это удалось.

Как вы можете получить содержимое структуры данных javascript?

+1

Попробуйте использовать это в своем контроллере '$ text = $ this-> getRequest() -> get ('request');' – NHG

ответ

24

Во-первых, вам не нужно, чтобы получить доступ к контейнеру в контроллере, как он уже реализует ContainerAware

Так в основном ваш код должен выглядеть в вашем Controller.php

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

Кроме того, убедитесь, что на данные, которые вы отправляете, не являются нулевыми, используя console.log(data) в JS вашего приложения.

И, наконец, ответ на ваш вопрос: вы не используете правильную переменную, вы должны получить доступ к значению $('#request').val() но вы сохранили ее в request переменной, и вы использовали data имя переменной в контроллере.

Рассмотрите возможность изменения имени переменной, потому что это сбивает с толку.

15

Если вы отправляете данные в виде JSON - не как форма urlencoded - вам необходимо получить доступ к телу запроса непосредственно:

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

Вы делаете это неправильно при получении значения, вы должны использовать:

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

Причина запрос - это имя вашего параметра.

Смежные вопросы