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

Him*_*ana 2 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();
            });
        }
    });
Run Code Online (Sandbox Code Playgroud)

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

Sur*_*wla 12

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

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

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

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

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

<div id="abc" data-path="{{path('_inserttask')}}">
</div>
Run Code Online (Sandbox Code Playgroud)

在我的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();
        });
    }
});
Run Code Online (Sandbox Code Playgroud)