我有一个Ajax POST被发送到我的一个控制器。 e.g。
查询>索引。
在Index()Action中,我返回一个JSON的ActionResult。
当我正在进行登录检查时,我会执行if语句,如果activeUser的会话令牌为null,我会执行
return RedirectToAction("Index","Auth");
但是,这不是正确重定向,而是返回浏览器抱怨的JSON结果。
如何正确设置重定向,以便如果IF语句失败,它将转到登录页面,否则它将返回我需要的JSON结果?
答案 0 :(得分:4)
return Json(new{data=true})
关于ajax成功方法
$.ajax({
type: 'POST',
url: 'your url',
data:your data
success: function (data) {
if (data) {
window.location.href="url";
}
else {
window.location.href="url";
}
},
error: function (xhr, textStatus, errorThrown) {
alert(errorThrown);
}
});
return false;
答案 1 :(得分:1)
你可以这样做:
在两种情况下都返回JSON结果,只在条件为false时返回错误的JSON响应。这样,您的调用将返回到您视图上的AJAX,然后您可以检查那里的false值,如果匹配,您可以使用javascript重定向重定向到相应的视图。
希望这能清除你想要的想法。
答案 2 :(得分:1)
在Controller中,在JSON中返回true或false。然后在AJAX成功中,如果为true,则将window.location设置为新URL。
window.location = '@Url.Action("Index","Auth")';
答案 3 :(得分:0)
ajax请求的操作不会让您以这种方式重定向。
在您的错误情况下,您可以返回某种错误值,并在视图中的jQuery中处理此案例。这可能会重定向到错误页面,显示错误消息等。