所以,我有以下功能。点击后,我通过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();
});
}
});
答案 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();
}
}
});