Как я могу получить данные POST с использованием Ajax при передаче данных из поля данных? Проблема кажется состоящей в том, что мои данные не попадают в контроллер правильно, потому что я попытался заменить фактический атрибут данных жестко закодированными числами и по-прежнему не могу отправить этот номер. Вот мой Аякса вызов:Сообщение данных Ajax в ASP.NET Core 1 не передает значения
$(".js-toggle-attendance")
.click(function(e) {
var button = $(e.target);
$.ajax({
url: "/api/attendances/",
method: "POST",
contentType: "application/json",
data: 'gigId : button.attr("data-gig-id")',
dataType: "json"
})
.done(function() {
button
.removeClass("btn-default")
.addClass("btn-info")
.text("Going");
})
.fail(function() {
alert("Something failed!");
});
});
});
</script>
мои действия контроллера заключается в следующем:
[HttpPost]
public IActionResult Attend(AttendanceDTO dto)
{
и AttendanceDTO только простой класс объекта передачи данных:
public class AttendanceDTO
{
public int GigId { get; set; }
}
Я попытался следующие варианты для метода данных, а также то, что содержится в полезной нагрузке Chrome Dev Tools/Network Request (я нажимаю кнопку с идентификатором = 1):
data: 'gigId : button.attr("data-gig-id")'--> gigId : button.attr("data-gig-id")
data: { "gigId": button.attr("data-gig-id") } --> gigId=1
data: button.attr("data-gig-id") --> 1 No Properties
data: "2" --> 2 No Properties
Во всех случаях отладки действия контроллера показывает поле DTO как 0.
UPDATE: Я добавил тег [FromBody] и JSON строковой данные, и правильные данные, как представляется, размещение Теперь. Однако вышеописанный метод сбоя продолжает выполняться все время. Я обновил код, чтобы тянуть сообщение об ошибке, как показано ниже:
$(".js-toggle-attendance")
.click(function(e) {
var button = $(e.target);
$.ajax({
url: "/api/attendances/",
method: "POST",
contentType: "application/json",
data: JSON.stringify({ "gigId": button.attr("data-gig-id") }),
dataType: "json",
success: function() {
button
.removeClass("btn-default")
.addClass("btn-info")
.text("Going");
},
error: function(error) {
var x = error;
alert("Something failed!");
}
});
});
и сообщение об ошибке, что я был в состоянии захватить с Chrome Dev Tools:
error = Object {readyState: 4, responseText: "", status: 200, statusText: "OK"
UPDATE К FIX ПРОБЛЕМУ ВЫШЕ: Просто пришлось удалить dataType: «json», потому что сервер не отбрасывал json.