如何在Symfony中使用Ajax


How to use Ajax in Symfony?

我有一个页面,其中包含项目列表和一些用于搜索/排序这些项目的控件。我希望这些控件使用Ajax动态工作,但我找不到在Symfony中使用它的方法。

在普通的PHP中,我有一个收集数据的JS文件,然后将其发送到一个PHP文件,该文件触发了类中指定的方法。我怎么能在Symfony3中做这样的事情?我找到的唯一教程是Symfony 1.x。

如果您在表单中,您可以执行以下操作:

$(document).submit(function () {
    var url = $('form').attr('action');
    var data = $('form').serialize();
    $.post(url, data, function (data) {
        window.location.href = data.redirect;
    })
        .fail(function () {
            $('form').replaceWith(data.form);
        });
});

你只需要发送正确的网址:

$(document).on('click', 'a', function () {
        var url = window.location.href;
        $.get(url, function (data) {
            $('.container').replaceWith(data);
        });
});

也可以使用路由生成器,只需将:"friendsofsymfony/jsroutingbundle":"dev-master"添加到您的composer.json.

AppKernel.php:

new FOS'JsRoutingBundle'FOSJsRoutingBundle()

然后在你的路线中配置它。yml:

fos_js_routing:
    resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"

最后在路由中使用"暴露"arg:

@Route("/{table}/index", name="beta.index", options={"expose"=true})

我使用注释路由

在您的JS:中

var url = Routing.generate('beta.index', { 'table': 'foo' });

希望它能帮助你:)