Почему $ post не работает, но $ ajax работает на контроллере веб-интерфейса asp.net? - PullRequest
0 голосов
/ 22 октября 2018

Мне интересно узнать, почему работает запрос $. Ajax () , но $. Post () возвращает просто пустой массив на контроллере.

controller

[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)
    }
})

Но этот не работает, массив courseAttended в контроллере пуст.

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

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вам не нужно переводить ваш объект в $ .post

 $.post(url, courseAttended, function (response) {
        console.log(response)
    },"json")
0 голосов
/ 22 октября 2018

$.post() используйте значение по умолчанию contentType: 'application/x-www-form-urlencoded; charset=UTF-8', но вы используете contentType: 'application/json; charset=utf-8', со строковыми данными в вашем методе $.ajax().

Если вы используете $.post(), вам необходимо сгенерировать данныес индексаторами коллекции для соответствия вашему параметру List<CourseModel>, например

var data =  { [0].SomeProperty: SomeValue, [0].AnotherProperty: AnotherValue, [1].SomeProperty: SomeValue, .... };
$.post(url, data , function (response) {
    ....
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...