Почему ajax-запрос вызывается дважды
Я пытаюсь обновить базу данных с помощью ajax запроса
Получаю id таблицы строк по щелчку мыши для отправки в представление для обновления данных
но так как мой ajax вызывается дважды (почему?), второй вызов обратный первому
<table>
<tbody>
{% for dcf in datacorrections %}
<tr>
<td data-toggle="tooltip" data-placement="top" title="">{{ dcf.ide }}</td>
<td data-toggle="tooltip" data-placement="top" title="" id="{{ dcf.ide }}">{{ dcf.deativated }}</td>
</tr>
{% endfor %}
</tbody>
</table>
$('body').on('click','td', function() {
var _id = $(this).attr('id');
$.ajax({
type: 'POST',
url: "{% url 'monitoring:deactivate_dcf' %}",
data: { "id" : _id },
dataType: 'html',
success: function (response) {
obj = JSON.parse(response);
},
});
});
@login_required
@csrf_exempt
def deactivate_dcf(request):
if request.is_ajax() and request.method == "POST":
datacorrection_id = request.POST.get("id")
if DataCorrection.objects.filter(ide = datacorrection_id).exists():
if DataCorrection.objects.get(ide = datacorrection_id).deativated == False:
DataCorrection.objects.filter(ide = datacorrection_id).update(deativated=True)
else:
DataCorrection.objects.filter(ide = datacorrection_id).update(deativated=False)
return JsonResponse({"response": "success",}, status=200)
else:
return JsonResponse({"response": "failed","exist":"datacorrection not exist"}, status=404)
return JsonResponse({"response":"not_ajax"}, status=200)
добавьте класс "clickable-td" к кликабельному td:
<td data-toggle="tooltip" class="clickable-td" data-placement="top" title="" id="{{ dcf.ide }}">{{ dcf.deativated }}</td>
добавьте это вместо этого, это вызовет событие на этом td, и оно должно остановить распространение
$('.clickable-td').click(function(e) {
e.preventDefault();
e.stopImmediatePropagation();
var _id = $(this).attr('id');
console.log(_id);
$.ajax({
method: 'POST',
url: "{% url 'monitoring:deactivate_dcf' %}",
data: { "id" : _id },
dataType: 'json',
success: function (response) {
console.log("we went throught !");
console.log(response);
},
})
});
если вы зайдете в консольный инспектор и найдете консольный журнал ID, то все должно быть в порядке