当我点击提交按钮时,我想重定向到另一个网址,这是第一个视图上的jquery代码
$('#Submit-ids').click(function () {
var ids = [1, 2, 3, 4,5,6,7,8,9,10];
$.ajax({
type: "POST",
url: "@Url.Action("Payment", "Screenings")",
data: JSON.stringify(ids),
success: function () {
alert("Succesfully made your payment");
},
contentType: 'application/json'
});
})
现在,处理数据库的我的控制器是:
[HttpPost]
public ActionResult Payment(IEnumerable<int> ids)
{
foreach (int element in ids)
{
var screening = new Screening {
Seat = element.ToString()
};
_context.Screenings.Add(screening);
_context.SaveChanges();
}
return RedirectToAction("Index","Home");
}
但是当我点击按钮(id ='Submit-ids'的那个)时,页面没有重定向,地址栏上的我的网址变为“?”最后的角色。
提前感谢。
答案 0 :(得分:0)
为ajax调用返回Redirect响应没有意义。如果您正在进行ajax调用并希望在完成后进行重定向,则应该在ajax调用的done
事件上进行重定向。您可以从服务器操作方法返回要重定向到的URL。
if (Request.IsAjaxRequest())
{
return Json(new { status = "success", url = Url.Action("Index", "Home") });
}
return RedirectToAction("Index","Home");
在你的ajax调用成功/ done
事件中,检查响应json并根据需要重定向
$.ajax({
}).done(function(res){
if(res.status==='success')
{
window.location.href=res.url; // This will issue a new GET request to Index action
}
else
{
alert("Some thing unexpected happened. show a proper error message to user");
}
});
再次 但是,在ajax调用中进行重定向并没有多大意义,因为使用ajax背后的整个想法是为用户提供部分页面更新体验(没有整页重新加载/导航) 。您可能根本不使用ajax并进行正常的表单提交,您可以使用return RedirectToAction