Есть 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>
Подскажите пожалуйста что я делаю не так?
Если Вы выполняете 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();
}
Ссылки по теме
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем привет!Сразу извиняюсь, если очень глупо задал вопрос
У меня есть форма на которой выполняется ajax запрос, в итоге выполнения происходит перенаправление на другую страницу$(location)