Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从twig JavaScript$.ajax传递到Symfony2控制器_Javascript_Php_Ajax_Symfony - Fatal编程技术网

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

将变量从twig JavaScript$.ajax传递到Symfony2控制器,javascript,php,ajax,symfony,Javascript,Php,Ajax,Symfony,(我简化了前面的问题) 我需要使用JavaScript将变量传递给Symfony2控制器,将该变量设置为session,然后返回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 acti

(我简化了前面的问题) 我需要使用JavaScript将变量传递给Symfony2控制器,将该变量设置为session,然后返回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>    
//test1.html.twig,带有$.ajax脚本和标记。
函数myFunction(){
var elementy=document.getElementsByClassName('inputISBN');
var data=elementy[0]。getAttribute('value');
$.ajax({
url:“{path('test')}}”,
类型:“POST”,
数据:数据,
成功:函数(){alert(“ok”);}
});   
}
以下是控制器中的操作:

/**
 * @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();
}
/**
*@Route(“/test1”,name=“test1”)
*@Template()
*/
公共函数test1Action()
{        
返回数组();
}
/**
*@Route(“/test”,name=“test”)
*@Template()
*/
公共功能测试(请求$Request)
{
$data=$request->request->get('data');
$session=$request->getSession();
$session->set('data',$data);
返回数组();
}
/**
*@Route(“/test2”,name=“test2”)
*@Template()
*/
公共函数test2Action(请求$Request)
{       
$session=$request->getSession();
$data=$session->get('data');
回显“”,打印($data),“”;
  $.ajax({
        url: "{{ path('test') }}",
        type: "POST",
        data: data ,
        success: function() {alert("ok");}
    });
返回数组(); }

当更改输入标记中的值时,我会收到警报('ok'),但当打开test2Action site print\r($data)时,只返回1。

当我将中的
data:data
更改为
data:{“data:data}
时,它会起作用

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

ajax的url中的路由错误:

url: "{{ path('test1') }}",
必须是:


添加
testAction
以更新路由后是否清除缓存?尝试在
testAction
中返回一些数据,如
返回新响应(“数据集”)并用ajax捕捉它。因此,您将检测问题您是否检查了
testAction
中的内容?使用
$session->get('data')在会话中设置
数据
值后,测试会话中的内容
可能需要查找json的基础知识。也可以尝试在浏览器中按F12,然后单击“网络”选项卡。您实际上可以看到在浏览器和服务器之间发送的内容。