Почему 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, то все должно быть в порядке

Вернуться на верх