Symfony2:如何在javascript中获取当前路由?

时间:2014-02-17 22:57:05

标签: javascript jquery ajax symfony

我正在使用Ajax更改页面中的数据。所以,我想知道当前路由是什么,以便调用不同的功能。我已经阅读了许多解决方案,用于检索当前网址以及获取ControllerTwig中的当前路由。但是,有没有办法在javascriptjQuery

中实现这一目标
$(document).ready(function(){
    $('#form_patient').change(function(){
        var id = $(this).val();
        // Get the current route
        var route = ??;  // <----------------Want to get the current route
        if(route === 'route1'){
            functionForRoute2(id,route)
        }
        else{
            functionForRoute2(id,route);
        }
    });
});

** Route1 **

的功能
function functionForRoute1(id,route){
    $.ajax({
        type: "POST",
        url: Routing.generate(route),
        data: JSON.stringify({id:id}),
        dataType: "json",
        success: function(data){
            // Execute some specific data for route1
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert('Error : ' + errorThrown);
        }
    });
}

** Route2 **

的功能
function functionForRoute2(id,route){
    $.ajax({
        type: "POST",
        url: Routing.generate(route),
        data: JSON.stringify({id:id}),
        dataType: "json",
        success: function(data){
            // Execute some specific data for route2
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert('Error : ' + errorThrown);
        }
    });
}

3 个答案:

答案 0 :(得分:5)

我要做的是在html标签中输出路线(你想要的任何路线),例如(树枝版):

<div id="my-route" data-route"{{ path("my_route") }}"></div>

然后在你的代码中,我会通过jquery来检索那条路径:

$(document).ready(function(){
    $('#form_patient').change(function(){
        var id = $(this).val();

        var route = $('my-route').data('route');       
    });
});

您还可以将路径(“my_route”)更改为包含路径名称的字符串,然后执行if / else语句。但是,我不认为这是一个好主意,好像你的路线名称改变了,那么你的代码也会受到影响

答案 1 :(得分:1)

您不会仅使用Javascript或JQuery获取当前路由。但是,您可以使用Twig获取当前使用Javascript或当前路线的URL。

另一种可能的解决方案是向服务器发出一个AJAX调用,传递当前URL,然后将其与正确的路由匹配并发回。但是,如果我是你,我会从Twig获得当前路线。

答案 2 :(得分:-1)

var route = "{{ app.request.attributes.get('_route') }}";