将变量从twig JavaScript $ .ajax传递给Symfony2控制器

时间:2015-04-28 10:39:28

标签: javascript php ajax symfony

(我已简化上一个问题) 我需要使用JavaScript将变量传递给Symfony2控制器,将该变量设置为session,然后返回会话变量。

//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>    

以下是Controller中的操作:

/**
 * @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();
}

我在更改输入标记中的值时会收到警报(&#39;确定&#39;)但是在打开test2Action网站时,print_r($ data)只返回1。

2 个答案:

答案 0 :(得分:0)

我在

中将data: data更改为data: { "data": data }时正常工作
  $.ajax({
        url: "{{ path('test') }}",
        type: "POST",
        data: data ,
        success: function() {alert("ok");}
    });

答案 1 :(得分:0)

ajax的网址路径错误:

<p <span

必须:

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