【发布时间】:2025-12-27 03:50:12
【问题描述】:
(我已经简化了上一个问题) 我需要使用 JavaScript 将变量传递给 Symfony2 控制器,将该变量设置为会话,然后返回会话变量。
//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();
}
更改输入标签中的值时,我收到警报('ok'),但打开 test2Action 站点时 print_r($data) 仅返回 1。
【问题讨论】:
-
添加
testAction更新路由后,你清除缓存了吗?尝试在testAction中返回一些数据,例如return new Response("data set");,并用ajax 捕获它。所以你会发现问题 -
您检查过
testAction中的内容吗?使用$session->get('data');在会话中设置data值后,测试您在会话中的内容
标签: javascript php ajax symfony