Jquery не может выбрать уникальные элементы с помощью классов
Я пытаюсь использовать ajax для некоторых автоматически генерируемых html-элементов из django. Я видел, что это делается путем выбора экземпляров через класс, но я не могу заставить это работать. Что я делаю не так?
javascript
$(document).ready(function() {
$('.fix-button').on('submit', function(event) {
event.preventDefault();
var $issue_id = $(this);
$.ajax({
url: '{% url "fix_issue" %}',
type: 'POST',
datatype: 'json',
data: {
issueid: $issue_id.val(),
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
action: 'post'
},
success: function (json) {
document.getElementById("fixed_bool").innerHTML = json['result']
console.log(json)
},
error: function (xhr, errmsg, err) {
}
});
});
});
html
<button class = "fix-button" value = "{{ issue.id }}">Fix</button>
views.py
def FixView(request):
if request.POST.get('action') == 'post':
result = ''
id = int(request.POST.get('issueid'))
issue = get_object_or_404(Issue, id=id)
if issue.fixed == False:
issue.fixed = True
result = str(issue.fixed)
issue.save()
else:
issue.fixed = False
result = str(issue.fixed)
issue.save()
return JsonResponse({'result': result, })
Вы пытаетесь добавить слушателя событий в список, а не в отдельный элемент.
Попробуйте использовать метод .each()
после захвата элемента.
Бэкэнд действительно работал, но ярлык, переключающийся между true и false, был тем, что не обновлялся должным образом. Чтобы исправить это, я добавил уникальный идентификатор к метке, <span id = "{{ issue.id }}">{{ issue.fixed }}</span>
и получил уникальный идентификатор с помощью
var issue_id = $(this).val()
document.getElementById(issue_id).innerHTML = json['result']