我有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');
}
});
答案 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
步骤;
例如在你的情况下;
<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;
}