将变量从twig JavaScript$.ajax传递到Symfony2控制器
(我简化了前面的问题) 我需要使用JavaScript将变量传递给Symfony2控制器,将该变量设置为session,然后返回session变量将变量从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
//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,然后单击“网络”选项卡。您实际上可以看到在浏览器和服务器之间发送的内容。