Symfony在成功后重定向(重新加载)到另一个页面

时间:2017-02-17 07:30:49

标签: ajax symfony

我有ajax调用并且在调用之后,成功时我需要重定向(重新加载)到另一个阳离子,例如/test,该怎么做?

        $.ajax({
        type: "POST",
        url: '/app_dev.php/api/tasks',
        data: {
            ids: result,
            invoice_id: invoice_id
        },
        success: function (data) {
            // how to reload page in another path, example /app_dev.php/test
        },
        error: function () {
            // alert('it broke');
        },
        complete: function () {
            // alert('it completed');
        }
    });

4 个答案:

答案 0 :(得分:2)

试试这个

$.ajax({
    type: "POST",
    url: '/app_dev.php/api/tasks',
    data: {
        ids: result,
        invoice_id: invoice_id
    },
    success: function (data) {
        location.href = '/app_dev.php/test';
    },
    error: function () {
        // alert('it broke');
    },
    complete: function () {
        // alert('it completed');
    }
});

另外,为了更好地在JS中进行路由,您可以查看FOSJsRoutingBundle

答案 1 :(得分:1)

您可以在javascript中使用smyfony2路由 FOSJsRoutingBundle

步骤;

  1. 使用https://symfony.com/doc/master/bundles/FOSJsRoutingBundle/installation.html
  2. 安装FOSJsRoutingBundle
  3. 使用https://symfony.com/doc/master/bundles/FOSJsRoutingBundle/usage.html
  4. 在成功功能中使用您的路线

    例如在你的情况下;

    <script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
    <script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
    <script>
    $.ajax({
            type: "POST",
            url: '/app_dev.php/api/tasks',
            data: {
                ids: result,
                invoice_id: invoice_id
            },
            success: function (data) {
                window.document.location = Routing.generate('your_test_route_name');
            },
            error: function () {
                // alert('it broke');
            },
            complete: function () {
                // alert('it completed');
            }
        });
    </script>
    

答案 2 :(得分:0)

您可以使用此javascript代码将用户定位到另一个成功页面:window.document.location = '/app_dev.php/test';

在您的代码中:

success: function (data) {
        // how to reload page in another path, example /app_dev.php/test
        window.document.location = '/app_dev.php/test';
    },
  

话虽如此,您不应该对网址的'app_dev.php'部分进行硬编码,因为这可能只适用于Symfony的开发环境。

     

您可以根据环境设置为“prod”或“dev”(或其他一些环境)来定义“前缀”Web路径。

答案 3 :(得分:0)

您无法通过ajax请求从控制器重定向,因此您需要将重定向路径传递给响应然后

success: function(response) {
    window.location.href = response.yourPath;
}