Приложение ASP.NET MVC 5 - Как я могу перенаправить на URL после публикации AJAX? - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь перенаправить пользователя на страницу после успешной публикации 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 ]

1 голос
/ 13 мая 2019

Во-первых, result будет содержать объект, поэтому сравнение его с true довольно странно (хотя на самом деле будет работать здесь из-за приведения типов).

Во-вторых, и главная проблема с вашей логикой заключается в том, что вы проверяете свойство redirectUrl ответа, но правильное имя - redirectToUrl.

success: function(result) {
  window.location = result.redirectToUrl;
}

Однако стоит отметить, что в этой ситуации запрос AJAX полностью избыточен, поскольку вы перенаправляете страницу сразу после ее завершения в любом случае.

0 голосов
/ 14 мая 2019

вы можете просто использовать в своем виде MVC в ajax success-

success:function()
{
window.localtion.href="@Url.Action("Index","Home")";
}
0 голосов
/ 13 мая 2019

Я предполагаю, что в вашем контроллере у вас есть действие, после этого используйте 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");
      }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...