ASP.NET MVC 5应用程序-如何在ajax发布后重定向到URL?

时间:2019-05-13 13:25:54

标签: jquery ajax asp.net-mvc

在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;
                }
            }
        });
    });

3 个答案:

答案 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")";
}