我有以下Ajax请求:
$.ajax({
url: '/Projects/Index',
type: 'POST',
data: data,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
error: xhr => { swal('From Error!', 'We\'ve saved your hours, thanks for your input!', 'success'); console.log(xhr) },
success: result => swal('From Success!', 'We\'ve saved your hours, thanks for your input!', 'success')
});
即使状态代码为200,也总是出错。我的控制器收到data
并使用填充,然后返回View()
。
这是我的控制器动作:
[HttpPost, ActionName("Index")]
public ActionResult SetHours(HourPostRequest[] data)
{
foreach(var item in data)
{
var correctModel = item.ToEngineerHours(db);
db.EngineerHours.Add(correctModel);
db.SaveChanges();
}
var eng = db.Engineers.FirstOrDefault(e => e.DomainUsername == User.Identity.Name).ID;
var test = db.EngineerHours.Where(e => e.EngineerID == eng).ToList();
return View(test);
}
数据始终完好无损,收到罚款,View
始终返回。我添加了一个随机的test
集合来返回我的视图模型:
@model IList<Timesheet.Models.EngineerHours>
我已进入Chrome开发工具网络视图,有效负载正确,响应为200,控制器已收到数据并返回View
。
这意味着无论成功状态如何,我的SweetAlert2
警报始终是错误的。
有人能说出为什么会发生这种情况吗?
答案 0 :(得分:1)
您将返回View(),这是一天结束时的HTML字符串。但是,在您的请求中,您指定:
dataType: 'json'
告诉jQuery将响应视为json格式的字符串。 jQuery看到HTML并且无法将其识别为有效的json,因此错误。