jquery - ASP.NET MVC 5 应用程序 - 如何在 ajax 发布后重定向到 URL?
问题描述
我试图在 ajax 发布成功后将用户重定向到一个页面。session 变量确实发生了变化,但之后它永远不会重定向。
控制器:
[HttpPost]
public ActionResult SelectFacility(string Facility)
{
System.Web.HttpContext.Current.Session["Facility"] = Facility;
return Json(new { redirectToUrl = Url.Action("Index", "Incident") });
}
Javascript
$("#Facility").on("change", function () {
var fac = $(this).find("option:selected").text();
/*
$.post("/Incident/SelectFacility", {
Facility: fac
});
window.location = result.redirectUrl;*/
$.ajax({
url: '@Url.Action("SelectFacility","Incident")',
type: 'POST',
//contentType: 'application/json', not needed
//dataType: 'jsonp', jsonp is for sending to a site other than the current one
data: {
Facility: fac
},
success: function (result) {
if (result == true) {
window.location = result.redirectUrl;
}
}
});
});
解决方案
首先result
将持有一个对象,因此将其与它进行比较true
是相当奇怪的(尽管由于类型强制而实际上在这里工作)。
其次,您的逻辑的主要问题是您正在检查redirectUrl
响应的属性,但正确的名称是redirectToUrl
.
success: function(result) {
window.location = result.redirectToUrl;
}
但是,值得注意的是,在这种情况下,AJAX 请求是完全多余的,因为您在页面完成后立即重定向页面。