2015-04-28 4 views
0

(Я упростил предыдущий вопрос) Мне нужно передать переменную контроллеру Symfony2 с помощью JavaScript, установить эту переменную в сеанс и затем вернуть переменную сеанса.

//test1.html.twig with $.ajax script and <input> tag. 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

<form action="#" method="#"> 
    <input type="number" class="inputISBN" name="name" 
     value="666" onchange="myFunction()"> 
</form> 

<script type='text/javascript'> 
function myFunction() { 
    var elementy = document.getElementsByClassName('inputISBN'); 
    var data = elementy[0].getAttribute('value'); 

    $.ajax({ 
     url: "{{ path('test') }}", 
     type: "POST", 
     data: data , 
     success: function() {alert("ok");} 
    }); 
} 
</script>  

Вот действия в контроллере:

/** 
* @Route("/test1", name="test1") 
* @Template() 
*/ 
public function test1Action() 
{   
    return array();   
} 


/** 
* @Route("/test", name="test") 
* @Template() 
*/ 
public function testAction(Request $request) 
{ 
    $data = $request->request->get('data');   
    $session = $request->getSession();  
    $session->set('data',$data); 
    return array(); 
} 


/** 
* @Route("/test2", name="test2") 
* @Template() 
*/ 
public function test2Action(Request $request) 
{  
    $session = $request->getSession();  
    $data = $session->get('data');   
    echo '<pre>',print_r($data),'</pre>';   
    return array(); 
} 

Я получаю предупреждение ('ОК') при изменении значения во входном теге, но при открытии test2Action сайта print_r ($ данных) возвращает только 1 .

+0

сделал вам очистить кэш после добавления 'testAction' обновить маршруты? попробуйте вернуть некоторые данные в 'testAction', например' return new Response («набор данных»); 'и поймать его с помощью ajax. поэтому вы обнаружите проблему – Asgu

+0

Вы проверили, что вы получаете в 'testAction'? Проверьте, что у вас есть в сеансе сразу после установки значения 'data' в сеансе, используя' $ session-> get ('data'); ' –

ответ

0

Это работает, когда я меняю data: data к data: { "data": data } в

$.ajax({ 
     url: "{{ path('test') }}", 
     type: "POST", 
     data: data , 
     success: function() {alert("ok");} 
    }); 
+2

Возможно, вы захотите найти основы json. Можете также попробовать нажать F12 в своем браузере, а затем щелкнуть на вкладке сети. Фактически вы можете видеть, что отправляется между браузером и сервером. – Cerad

0

Маршрут является неправильным в URL-й Аякса:

url: "{{ path('test') }}", 

Должно быть:

url: "{{ path('test1') }}", 
Смежные вопросы