如何将twig {{path('')}}调用为jquery ajax url

时间:2013-03-16 11:15:17

标签: jquery symfony twig

我正在使用模式框中的ajax请求来保存我的symfony2应用程序中的数据。调用模态框时,将呈现模态标记。所以我无法在模态框标记的任何地方使用“”符号。

我的代码是:

var path = {{ path('_inserttask') }};
    $.ajax({
        type: 'POST',
        url: path,
        data: { myid: 123456 },
        success: function(data) {
            $('#mask , .login-popup').fadeOut(300 , function() {
                $('#mask').remove();
            });
        }
    });

调用ajax时控制台出错。我发现如果我使用硬编码网址 - 它可以工作!但是使用{{ path('_inserttask') }}作为url会出错。我明白这是我没有使用的引用标志。如何解决问题?它已经杀了2个小时: - (

1 个答案:

答案 0 :(得分:11)

从我上面看到的你没有在路径变量的值上加上双引号。试试这个 -

var path = "{{ path('_inserttask') }}";
$.ajax({
    type: 'POST',
    url: path,
    data: { myid: 123456 },
    success: function(data) {
        $('#mask , .login-popup').fadeOut(300 , function() {
            $('#mask').remove();
        });
    }
});

还有一个想法,你是将这个脚本嵌入到twig模板中,稍后会渲染为html然后发送到浏览器吗?如果是,我认为上述变化将解决问题。

如果您尝试在纯JavaScript文件中使用twig。我认为它不会起作用。如果你这样做的话。我想你尝试将路径值放在html中,然后使用javascript来获取该值,然后调用ajax。例如。我会选择在div的一个属性中嵌入该路径url。

在我的twig模板文件中(例如index.html.twig)

<div id="abc" data-path="{{path('_inserttask')}}">
</div>

在我的javascript文件中(例如abc.js)

var path = $("#abc").attr("data-path");
$.ajax({
    type: 'POST',
    url: path,
    data: { myid: 123456 },
    success: function(data) {
        $('#mask , .login-popup').fadeOut(300 , function() {
            $('#mask').remove();
        });
    }
});