Ajax POST到MVC Controller总是出错

时间:2017-08-15 12:47:06

标签: ajax asp.net-mvc asp.net-mvc-4

我有以下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警报始终是错误的。

有人能说出为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:1)

您将返回View(),这是一天结束时的HTML字符串。但是,在您的请求中,您指定:

dataType: 'json'

告诉jQuery将响应视为json格式的字符串。 jQuery看到HTML并且无法将其识别为有效的json,因此错误。