2013-05-16 2 views
5

Я пытаюсь использовать JQuery внутри Название переменного шаблона веточки послать AJAX, но я не могу получить доступ к переменному внутри Jquery веточки:переменная JQuery внутри шаблона веточки

Моего кода:

<script type="text/javascript"> 
      jQuery(document).ready(function(){ 


       jQuery("#my_input").change(function(){ 

        var value = jQuery("#my_input").val(); 

        jQuery.ajax({ 

         url: "{{ path('ParteAccidentes_ajax', {'emergencia': value}) }}", 
         timeout: 5000, 
         success: function(data) { 
          alert('ok'); 
         }, 
         error: function() { 
          alert('mal'); 
         } 
        }); 

       }); 

      }); 
     </script> 

показать ошибки значение переменной не существует (в "URL: ..." линия)

Спасибо!

ответ

10

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

Вы могли бы сделать что-то вроде этого:

<script type="text/javascript"> 
           jQuery(document).ready(function(){ 

               jQuery("#my_input").change(function(){ 
                    
                   var value = jQuery("#my_input").val(); 
                   var url = "{{ path('ParteAccidentes_ajax', {'emergencia': 'text'}) }}"; 
                   url = url.replace("text", value); 
                                        
                   jQuery.ajax({ 
                        
                       url: url, 
                       timeout: 5000, 
                       success: function(data) { 
          alert ('ok'); 
                       }, 
                       error: function() { alert ('mal'); 
                       } 
                   }); 

               }); 

           });   
       </script> 
+0

Nice man, спасибо –

+0

Превосходно .. !! спасибо –

2

Конечно, его не существует.

Переменная value - это просто текст для Twig. Помните:

Сначала отображаются части Twig, затем они выводятся в браузер, затем браузер отображает содержимое и выполняет Javascript.

Выполняется строка {{ path('ParteAccidentes_ajax', {'emergencia': value}) }} до value - это событие обрабатывается как javascript.

Также вы делаете это в обработчике событий.

Как должна твинг (поскольку это просто библиотека PHP) изменить URL-адрес пути для исполняемого события javascript?

Поскольку вы просто хотите обновить URL, основанный на фреймворка путей и переменная JavaScript, пожалуйста, посмотрите на этот пакет: https://github.com/FriendsOfSymfony/FOSJsRoutingBundle

Это обеспечивает точную функциональность вы хотите.

+0

используя другой пакет только для получения маршрута, кажется, как массовое убийство. Простое решение [replace()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) кажется лучше в аспекте производительности. Хотя хорошо знать, что theres комплект для этого! :) –

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