2013-05-16 11 views
5

Sto cercando di utilizzare un varaible jQuery all'interno di un modello di ramoscello di inviare da ajax, ma non riesco ad accedere alla variabile jquery all'interno del ramoscello:jquery variabile all'interno di template ramoscello

Il mio codice è:

<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> 

Lo spettacolo di errore è il valore della variabile non esiste (in "URL: ..." line)

Grazie!

risposta

10

Il problema è che Twig viene lanciato prima di JavaScript e la variabile "id_emergencia" non viene riconosciuta da Twig. Potresti fare un trucco. È possibile inserire una stringa, come parametro e quindi, nel codice JavaScript, sostituire la stringa con il valore della variabile. In questo modo, avrai sempre l'URL corretto prima che la tua petizione AJAX venga lanciata.

Si potrebbe fare qualcosa di simile:

<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

Bel uomo, grazie –

+0

Superbo .. !! grazie –

2

Ovviamente non esiste.

La variabile value è semplicemente testo per Twig. Ricorda:

Prima vengono renderizzate le parti di Twig, quindi vengono immesse nel browser, quindi il Browser esegue il rendering del contenuto ed esegue il Javascript.

La riga {{ path('ParteAccidentes_ajax', {'emergencia': value}) }} viene eseguita molto prima che value venga analizzato come javascript.

Anche tu lo stai facendo in un gestore di eventi.

In che modo twig (poiché è solo una libreria PHP) cambia l'URL del percorso su un evento javascript eseguito?

Dal momento che si desidera solo per aggiornare un URL basato su percorsi di symfony e una variabile javascript, si prega di dare un'occhiata a questo bundle: https://github.com/FriendsOfSymfony/FOSJsRoutingBundle

Esso fornisce la funzionalità esatto che si desidera.

+0

utilizzando un altro fascio solo per ottenere il percorso sembra un eccessivo. La soluzione semplice [replace()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) sembra migliore per l'aspetto delle prestazioni. Anche se è bello sapere che c'è un pacchetto solo per questo! :) –

Problemi correlati