5

我正在尝试在树枝模板中使用 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:...”行中)

谢谢!

4

2 回答 2

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>
于 2013-05-16T09:56:56.710 回答
2

当然不存在。

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

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

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

您也在事件处理程序中执行此操作。

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

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

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

于 2013-05-16T09:54:59.073 回答