AJAX回调没有解雇

时间:2014-11-06 22:56:32

标签: jquery

所以,我有以下功能。点击后,我通过AJAX将一些数据发送到将我发布到我的数据库的ampther页面。那部分工作正常。但是,我需要在成功的数据库插入中删除表中的一行。我试图使用.done(),但由于某种原因它没有开火。是否有触发器我需要执行其他PHP页面才能让这个脚本知道它是一个成功的操作?

$(document).on('click', '.send', function() {
    $(this).closest('tr').find('input:not(.ofrCode)').each(function(){
        if ($(this).val() == '') {
            $(this).parent().addClass('has-error');
        }
    });
    if (!$(this).closest('tr').find('td').hasClass('has-error')) {

        var code = $(this).closest('tr').find('.item').val();

        $.ajax({
            type: 'POST',
            url:  '/myPage.php',
            data: {
                'code' : code
            },
            dataType : 'json',
            async: false

        }).done(function() {

            $(this).closest('tr').remove();

        });
    }
});

2 个答案:

答案 0 :(得分:0)

$(this)不正确,因为返回ajax调用时上下文不一样。

在调用ajax之前,您需要将this保存到变量。

var source = $(this);

在ajax使用的回调中:

source.closest('tr').remove();

答案 1 :(得分:0)

好的,结合@Papa和@elzi的建议我通过更改以下内容来实现它:

var src  = $(this),
    code = src.closest('tr').find('.item').val();

$.ajax({
        type: 'POST',
        url:  '/myPage.php',
        data: {
            'code' : code
        },
        dataType : 'json',
        statusCode: {
            200: function() {
                src.closest('tr').remove();
            }
        }

});