2013-05-16 60 views
5

我想用一個jQuery varaible樹枝模板中阿賈克斯送,但我不能訪問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代碼中將字符串替換爲變量的值。通過這種方式,在您的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

好男人,謝謝 –

+0

一流..! 謝謝 –

2

當然它不存在。

value變量只是Twig的純文本。請記住:

首先呈現樹枝部分,然後將其輸出到瀏覽器,然後瀏覽器呈現內容並執行Javascript。

{{ path('ParteAccidentes_ajax', {'emergencia': value}) }}value被事件解析爲javascript之前執行。

另外你正在做一個事件處理程序。

twig(因爲它只是一個PHP庫)應該如何更改執行的javascript事件的路徑url?

既然你只是想更新基於symfony的路徑和JavaScript變量的URL,請看看這束:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle

它爲您提供所需的準確功能。

+0

似乎矯枉過正。簡單的[replace()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)解決方案在性能方面看起來更好。雖然很高興知道這只是一個捆綁! :) –