2014-02-17 8 views
2

Я использую Ajax для изменения данных на странице. Итак, я хочу знать, что это текущий маршрут, чтобы вызвать разные функции. Я прочитал множество решений, используемых для извлечения текущего URL-адреса, а также для получения текущего маршрута в Controller и Twig. Однако существует ли какой-либо возможный способ достичь этого в javascript или jQuery?Symfony2: Как получить текущий маршрут в javascript?

$(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); 
     } 
    }); 
} 

ответ

5

Что бы я сделал это выходной маршрут (любой маршрут, который Вы хотите) в HTML тег, например (веточка версия):

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

Затем в коде я бы retrive, что маршрут через JQuery как это:

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

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

вы также можете изменить путь («my_route») в строку с именем маршрута, а затем вы делаете ваш, если/другое заявление. Однако я не думаю, что это хорошая идея, как если бы название вашего маршрута изменилось, тогда ваш код также будет затронут

1

Вы не получите текущий маршрут, используя только JavaScript, или JQuery. Тем не менее, вы можете получить текущий URL с Javascript или текущий маршрут с помощью Twig.

Еще одно возможное решение - выпустить еще один вызов AJAX на сервер, передающий текущий URL-адрес, затем сопоставить его с правильным маршрутом и отправить его обратно. Однако, если бы я был вами, я бы просто получил текущий маршрут от Twig.

+0

Спасибо, что ответили. Это выглядит сложным ... – lvarayut

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

Я не думаю, что '{{}}' может использоваться в javascript. – lvarayut

+0

это твиг тег. – Nighon

+0

Точно, однако, мой вопрос заключается в том, как получить маршрут в JavaScript. – lvarayut

Смежные вопросы