从Jquery重定向到控制器asp.net中的操作

时间:2017-11-01 21:37:50

标签: javascript jquery asp.net asp.net-mvc

当我点击提交按钮时,我想重定向到另一个网址,这是第一个视图上的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'的那个)时,页面没有重定向,地址栏上的我的网址变为“?”最后的角色。

提前感谢。

1 个答案:

答案 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