AJAX调用后端方法后RedirectToAction无响应问题排查
问题:AJAX调用后端更新接口后无法跳转至Index页面
问题说明
我编写了名为ActualizarJornada的IActionResult后端方法,完成数据更新后需重定向至同一控制器的Index方法,该方法通过AJAX调用。但执行时RedirectToAction未生效,仅URL变化无页面响应,控制台无输出。尝试在AJAX的success/complete回调中设置window.location.href跳转,同时后端改为return Ok(),仍无法跳转至Index页面。
后端方法代码(ActualizarJornada)
public IActionResult ActualizarJornada(string data) { DateTime jornadaDiariaEntrada = DateTime.Parse(data.Split(';')[0]); DateTime jornadaDiariaSalida = DateTime.Parse(data.Split(';')[1]); DateTime jornadaFinDeSemanaEntrada = DateTime.Parse(data.Split(';')[2]); DateTime jornadaFinDeSemanaSalida = DateTime.Parse(data.Split(';')[3]); int jornadaDiariaId = Convert.ToInt32(data.Split(';')[4]); int jornadaFinDeSemanaId = Convert.ToInt32(data.Split(';')[5]); int empleadoJornadaId = Convert.ToInt32(data.Split(';')[6]); JornadaDiarium jd = _context.JornadaDiaria.Where(x=> x.JornadaDiariaId == jornadaDiariaId).Select(x => x).FirstOrDefault(); jd.JornadaDiariaId = jornadaDiariaId; jd.HoraEntrada = jornadaDiariaEntrada; jd.HoraSalida = jornadaDiariaSalida; _context.JornadaDiaria.Update(jd); _context.SaveChanges(); JornadaFinDeSemana jfd = _context.JornadaFinDeSemanas.Where(x=>x.JornadaFinDeSemanaId == jornadaFinDeSemanaId).Select(x => x).FirstOrDefault(); jfd.JornadaFinDeSemanaId = jornadaFinDeSemanaId; jfd.HoraEntrada = jornadaFinDeSemanaEntrada; jfd.HoraSalida = jornadaFinDeSemanaSalida; _context.JornadaFinDeSemanas.Update(jfd); _context.SaveChanges(); EmpleadoJornadum ej = _context.EmpleadoJornada.Where(x => x.EmpleadoJornadaId == empleadoJornadaId).Select(x => x).FirstOrDefault(); ej.JornadaDiariaId = jornadaDiariaId; ej.JornadaDiaria.HoraEntrada = jornadaDiariaEntrada; ej.JornadaDiaria.HoraSalida = jornadaDiariaSalida; ej.JornadaFinDeSemana.HoraEntrada = jornadaFinDeSemanaEntrada; ej.JornadaFinDeSemana.HoraSalida = jornadaFinDeSemanaSalida; ej.JornadaFinDeSemanaId = jornadaFinDeSemanaId; _context.EmpleadoJornada.Update(ej); _context.SaveChanges(); Helper helper = new Helper(); helper.ActualizarHorasExtra(ej.EmpleadoId); return RedirectToAction("Index"); }
初始AJAX调用代码
$.ajax({ type: "POST", data: { data }, url: "/EmpleadoJornada/ActualizarJornada", success: function (response) { console.log(response) }, failure: function (response) { console.log(response) }, error: function (response) { console.log(response) }, }); }); });
Index方法代码
public async Task<IActionResult> Index() { var horasExtraDbContext = _context.EmpleadoJornada.Include(e => e.Empleado).Include(e => e.JornadaDiaria).Include(e => e.JornadaFinDeSemana); return View(await horasExtraDbContext.ToListAsync()); }
修改后的AJAX调用代码
$.ajax({ type: "POST", data: { data }, url: "/EmpleadoJornada/ActualizarJornada", success: function (response) { window.location.href = "/EmpleadoJornada/Index"; }, failure: function (response) { }, error: function (response) { }, complete:function(response){ window.location.href = "/EmpleadoJornada/Index"; } }); }); });
内容的提问来源于stack exchange,提问作者R Marco
相关产品推荐
相关产品推荐

