为什么$ post不起作用,但是$ ajax在asp.net Web API控制器上起作用?

时间:2018-10-22 09:56:19

标签: jquery ajax asp.net-mvc asp.net-web-api

我想知道为什么$.ajax()请求可以工作,但是$.post()仅在控制器上返回一个空数组。

控制器

[Route("api/actuary/{actuaryId:long}/documents/")]
[HttpPost]
public async Task<IHttpActionResult> uploadCourseTrainingProofAsync(List<CourseModel> courseAttended)
{
    //code .....
}

此请求有效

$.ajax({
    url: url,
    cache: false,
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(courseAttended),
    dataType: "json",
    success: function (data) {
        console.log(data)
    }
})

但是此命令不起作用,controller中的courseAttended数组为空。

$.post(url, JSON.stringify(courseAttended), function (response) {
    console.log(response)
},"json")

2 个答案:

答案 0 :(得分:0)

LinkedList使用默认的$.post(),但是您在contentType: 'application/x-www-form-urlencoded; charset=UTF-8'方法中将contentType: 'application/json; charset=utf-8',与字符串化数据一起使用。

例如,如果要使用$.ajax(),则需要使用集合索引器生成数据以匹配$.post()参数,例如

List<CourseModel>

答案 1 :(得分:0)

您不必在$ .post中将对象字符串化

 $.post(url, courseAttended, function (response) {
        console.log(response)
    },"json")