我想将查询字符串参数从javascript(jquery)附加到symfony 2 url。 我想将选中的单选按钮的值传递给ajax请求,例如我想做的简单的php
$(document).ready(function() {
$('.id_radio').click(function() {
$.ajax({
'url': 'example.php?id='+($this).val(),
'success': function(r) {
$('#div1').html(r);
}
});
});
如何在symfony2 twig中生成此类URL?我们在symfony 2 twig中生成URL
{{ path('example_path', {'id': id}) }}
其中id是twig变量。
我尝试使用FOSJsRoutingBundle,但不知道是否出现同样的问题并且不确定如何使用它?
我在下面试过但是没有用。
$('.id_radio').click(function() {
alert(Routing.generate('example_path', {
'id': $(this).val()
}));
$.ajax({
'url': Routing.generate('example_path', {
'id': $(this).val()
}),
'success': function(r) {
$('#div1').html(r);
}
});
});
下面提到的解决方案由koskoz工作,我没有传递options = {“expose”= true}但是在添加它之后工作了。
但还有一个问题。它只在我们不刷新页面之前有效。如果我们刷新页面,它不起作用。为了使它工作,我必须删除symfony缓存文件。
如果我们已经在一个浏览器中打开它,它在其他浏览器中不起作用。
答案 0 :(得分:3)
这正是FOSJsRoutingBundle的目标:
您可以在JavaScript中配置要公开的路由,加载JS然后只需执行以下操作:
Routing.generate('my_route_to_expose', { id: 10 });
答案 1 :(得分:1)
而不是
/**
* @Route("/example/{name}", name="example_path", options={"expose"=true})
* @Template
*/
public function exampleAction($name)
{
}
并使用FOSJsRoutingBundle
$('.id_radio').click(function() {
alert(Routing.generate('example_path', {'id': $(this).val()}));
$.ajax({
'url': Routing.generate('example_path', {'id': $(this).val()}),
'success': function(r) {
$('#div1').html(r);
}
});
});
以下对我来说效果更好,
/**
* @Route("/example", name="example_path", options={"expose"=true})
* @Method({"GET"})
* @Template
*/
public function exampleAction()
{
}
$('.id_radio').click(function() {
$.ajax({
'url': '{{ path('example_path') }}',
'data': 'name='+$(this).val(),
'type': 'GET',
'success': function(r) {
$('#div1').html(r);
}
});
});
答案 2 :(得分:1)
从此处获取fosjsrouting包:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle 并在您的路由文件中添加该路由
选项: expose:true
并在你的js文件中添加 url = Routing.generate('route_name',{parameter:parameter_value});