2017-02-17 77 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; 
}