В таблице каждая строка содержит флажок в уникальной форме, например:
<td class = "d-inline-block col-2">
<div class = "form-check">
<form action = "/slider-update/1" method = "post" id = "check-1">
<input type = "hidden" name = "csrfmiddlewaretoken" value = "uDIiSPShbE3R2COQDI0qE4SlJGiqsQy8CQ2nQ0jllibaOqH6YsU8TtL7Xy0pF8sI">
<input class = "form-check-input position-static" type = "checkbox" id = "1" value = "is_active" aria-label = "...">
</form>
</div>
</td>
Каждая форма идентифицируется идентификатором в формате pk (здесь: «check-1»). Несмотря на всю эту четкую информацию, я не могу получить свою форму!
Вот мой код javascript:
$(document).on('click', 'form', function () {
var rpk = $(this).attr("id");
var url = $(this).attr("action");
var form = $('#' + rpk);
$.post(url, form.serializeArray())
.done(function (data) {
alert( data );
});
});
Я получаю правильную форму, но она содержит только токен, ничего не связанный с флажком.
Вам нужно установить атрибут name
для флажка.
Документ jQuery здесь сериализовать массив
это изменить ваш код следующим образом:
<input class = "form-check-input position-static" type = "checkbox" id = "1" name= "checkbox-1" value = "is_active" aria-label = "...">
также в вашем коде JavaScript. Не нужно делать
var form = $('#' + rpk);
вы можете просто использовать
$(this).serializeArray()
это :
$(document).on('click', 'form', function () {
var url = $(this).attr("action");
$.post(url, $(this).serializeArray())
.done(function (data) {
alert( data );
});
});