【问题标题】:variable jquery inside twig template树枝模板内的变量jquery
【发布时间】:2013-05-11 03:39:02
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: jquery variables twig


    【解决方案1】:

    问题是 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>
    

    【讨论】:

      【解决方案2】:

      当然不存在。

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

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

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

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

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

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

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

      【讨论】:

      • 使用另一个捆绑包只是为了获取路由似乎有点矫枉过正。简单的replace() 解决方案在性能方面似乎更好。虽然很高兴知道有一个包就是为了这个! :)
      猜你喜欢
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 2016-02-14
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多