2017-02-17 6 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',/* ваши параметры * /)) – kapa89

0

Вы можете просто использовать этот яваскрипта код, чтобы направить пользователя на другую страницу успеха: 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' часть URL, как вы, наверное, уже знаете, так как это работает только для Дев среды Symfony ,

Вы можете определить веб-путь «префикс» на основе того, установлено ли окружение «prod» или «dev» (или какая-либо другая среда).

1

Вы можете использовать маршрутизацию smyfony2 в JavaScript с FOSJsRoutingBundle

шагов;

  1. Установка FOSJsRoutingBundle с https://symfony.com/doc/master/bundles/FOSJsRoutingBundle/installation.html
  2. Используйте маршрутизацию в функции успеха с 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; 
}