0

js和ajax调用删除记录:

     $('.delete').click(function (e) {
       if (confirm("Are you sure want to delete record?")) {
           return true;
       }
       else {

           e.preventDefault();

       }
   });


        $('.type_delete').click(function() {
        var csrf_token = $("#csrf_token").val();
        var id = $(this).attr('id');
        $.ajax({ // create an AJAX call...
            data:{
                csrfmiddlewaretoken: ('{{csrf_token}}'),
                delete:id
            },
            type:'POST',
            url: '/setting/type/', // the file to call
            cache:false,
            success: function() { // on success..
                window.location.href = window.location;
            }
        });
        return false;
    });
    });

视图.py

def types(request):
    if request.method == 'POST':
        if 'delete' in request.POST:
            Types.objects.filter(id=request.POST['delete']).delete()
    """""""""
    return render

html:

 <input type="button" name="delete"  value="Delete" id="{{ type.id }}" class="type_delete delete"/>

上面的 ajax 是从 html 中获取正确的 id 并删除该特定数据。删除工作正常,我正在使用删除确认对话框,问题是即使我按下取消按钮或关闭符号,数据也会被删除。它应该只有当我按下确定时才会发生。我需要帮助来解决这个问题。

4

2 回答 2

1

当您的确认框出现时,对第二个函数的调用已经在进行中。您需要将第二个函数定义为另一个独立函数,然后从第一个函数中调用它。

这是一个例子:

 $('.delete').click(function (e) {

   e.preventDefault();
   if (confirm("Are you sure want to delete record?")) {
       doDelete($(this).attr('id'))
   }
 });




 function doDelete(elemId) {
    var csrf_token = $("#csrf_token").val();
    var id = elemId;
    $.ajax({ // create an AJAX call...
        data:{
            csrfmiddlewaretoken: ('{{csrf_token}}'),
            delete:id
        },
        type:'POST',
        url: '/setting/type/', // the file to call
        cache:false,
        success: function() { // on success..
            window.location.href = window.location;
        });
    }
于 2013-09-02T17:56:29.703 回答
0

一个事件处理程序中的条件不一定适用于第二个事件处理程序,您必须将其全部加入一个事件处理程序:

$('.type_delete').on('click', function (e) {
    e.preventDefault();
    if (confirm("Are you sure want to delete record?")) {
        var csrf_token = $("#csrf_token").val(),
            id         = this.id;
        $.ajax({
            data: {
                csrfmiddlewaretoken: '{{'+csrf_token+'}}',
                delete: id
            },
            type: 'POST',
            url: '/setting/type/',
            cache: false
        });
    }
});
于 2013-09-02T17:52:32.623 回答