2017-02-17 38 views
0

我有ajax调用和调用后,当成功时我需要重定向(重新加载)到另一个阳离子,例如/test,怎么做?成功后Symfony重定向(重新加载)到另一个页面

 $.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'); 
     } 
    }); 

回答

1

试试这个

$.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

+0

不明白的地方需要定制JS设置路由?'Routing.generate ('route_name',/ *您的参数* /)' –

+0

根据文档,您应该为您的路线设置名称并提供路线选项({“expose”= true})。之后,您将能够在JS(Routing.generate('route_name',/ * params * /)中使用此路由) – kapa89

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'; 
    }, 

说了这么多,你不应该硬编码的URL 'app_dev.php'一部分,因为你可能已经知道,因为这只是作品的Symfony的开发环境。

您可以根据环境设置为'prod'还是'dev'(或其他某种环境)来定义'prefix'web路径。

1

可以在JavaScript中使用smyfony2路由与FOSJsRoutingBundle

步骤;

  1. https://symfony.com/doc/master/bundles/FOSJsRoutingBundle/installation.html
  2. 安装FOSJsRoutingBundle用你的路线在您的成功函数https://symfony.com/doc/master/bundles/FOSJsRoutingBundle/usage.html

例如,你的情况;

<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> 
0

无法通过Ajax请求从控制器重定向,所以你需要通过重定向路径响应,然后

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