在ajax发布成功后,我试图将用户重定向到页面。会话变量确实会更改,但此后再也不会重定向。
控制器:
[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;
}
}
});
});
答案 0 :(得分:1)
首先result
将容纳一个对象,因此将其与true
进行比较是很奇怪的(尽管由于强制类型实际上可以在这里使用)。
第二,逻辑上的主要问题是,您正在检查响应的redirectUrl
属性,但正确的名称是redirectToUrl
。
success: function(result) {
window.location = result.redirectToUrl;
}
但是,值得注意的是,在这种情况下,AJAX请求是完全多余的,因为无论如何页面完成后都将立即重定向页面。
答案 1 :(得分:0)
我假设您在控制器中有操作,之后使用location.href
重定向您的操作所在的位置。
$(document).on('click', '.functionName', function() {
swal({
title: "Are you sure?",
type: "info",
showCancelButton: true,
confirmButtonColor: "#2196F3",
confirmButtonText: "Yes, assign it!",
closeOnConfirm: false,
showLoaderOnConfirm: true,
}, function() {
$.ajax({
type: "post",
url: "User/Create",
ajaxasync: true,
success: function() {
swal("Assigned!", "User has been created!", "success");
location.href = "/User/Create";
},
error: function(data) {
swal("Oops", "Something went wrong!", "error");
}
});
答案 2 :(得分:0)
您可以简单地在AVC成功使用MVC视图中使用
success:function()
{
window.localtion.href="@Url.Action("Index","Home")";
}