Получения url страницы в ajax запросе

168
21 июля 2019, 01:40

Есть ajax запрос. Результатом которого если всё хорошо будет срабатывать

return RedirectToAction("Index");

И как оказывается что бы перенаправить на другую страницу, в результате выполнения ajax запроса нужно ещё и сменить location самому, или останешься на той же странице. Нашёл варианты как это можно сделать Проблема при перенаправлении через RedirectToAction Но почему то когда я пытаюсь использовать результат выполнения ajax запроса там нет url как в примере. В результате мне возвращается html view Index. Подскажите пожалуйста может я делаю что то не так? Вот мой код Controller:

[HttpPost]
    public ActionResult Registration(Client client)
    {
        if (ModelState.IsValid)
        {
            return RedirectToAction("Index");
        }
        return View();
    }

Ajax запрос у меня сделан с помощью хелпера Ajax.Beginform поэтому не вижу смысла приводить весь код страницы, показываю функцию Success:

<script type="text/javascript">
    function Success(result) {
        $(location).attr('href', result.url);
    }
</script>

Подскажите пожалуйста что я делаю не так?

Answer 1

Если Вы выполняете AJAX запрос к серверу, то все заголовки HTTP перенаправлений будут возвращаться обратно клиенту, но не напрямую браузеру, а в Вашу функцию обратного вызова AJAX (success, done, then...).

$.ajax({
    url: "/Registration",
    dataType: 'json',
    data: { you: 'data', is: 'here'},
    success: function(result){
        window.location.href = result.url;
    }
});
[HttpPost]
public ActionResult Registration(Client client) {
    if (ModelState.IsValid) {
        var data = new { url = Url.Action("Index", "YouControllerName")};
        return Json(data, JsonRequestBehavior.AllowGet);
    }
    return View();
}
Ссылки по теме
  • RedirectToAction
  • HTTP перенаправления
  • Различие в использования location replace, href и assign
READ ALSO
Почему в проекте можно обратится к зависимостям подключенной dll?

Почему в проекте можно обратится к зависимостям подключенной dll?

Всем привет!Сразу извиняюсь, если очень глупо задал вопрос

140
GroupBy работает не корректно в IQueryable

GroupBy работает не корректно в IQueryable

Работаю с Entity FrameworkЕсть класс

138
Вызов алерта после редиректа

Вызов алерта после редиректа

У меня есть форма на которой выполняется ajax запрос, в итоге выполнения происходит перенаправление на другую страницу$(location)

229
C# прокси сервер авторизация

C# прокси сервер авторизация

в приложение есть форма где заполняется хост,порт, логин и пароль

184