树枝模板内的变量jquery

时间:2013-05-16 09:48:57

标签: jquery variables twig

我正在尝试在twig模板中使用jquery变量来通过ajax发送,但我无法访问树枝内的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:...”行中)

谢谢!

2 个答案:

答案 0 :(得分:10)

问题是Twig是在JavaScript之前启动的,并且Twig无法识别变量“id_emergencia”。你可以做一个技巧。您可以将字符串作为参数放置,然后在JavaScript代码中将字符串替换为变量的值。这样,在启动AJAX请求之前,您将始终拥有正确的URL。

你可以这样做:

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

答案 1 :(得分:2)

当然它不存在。

value变量只是Twig的纯文本。记住:

首先呈现Twig部分,然后将其输出到浏览器,然后浏览器呈现内容并执行Javascript。

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

你也是在事件处理程序中这样做的。

twig(因为它只是一个PHP库)如何更改已执行的javascript事件的路径网址?

由于您只想根据symfony路径和javascript变量更新URL,请查看此捆绑包:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle

它提供了您想要的确切功能。

相关问题