我遇到了这个问题,并非我的所有ajaxComplete
来电都被解雇了。
我的代码
$(document)
.ajaxStart(function () {
$.blockUI();
})
.ajaxComplete(function () {
$.unblockUI();
});
以下是ajaxComplete
未触发的代码:
$('body').on('click', '.actTimeSheetApprove', function () {
var node = $(this).parents('tr');
$.ajax({
url: '/TimeSheet/Approve/',
type: 'POST',
context: this,
data: {
__RequestVerificationToken: fnGetToken(),
id: $(this).data('id')
},
success: function (data) {
if (data == 'success') {
var table = $('#tblTimeSheetApprove').DataTable();
table.row(node).remove().draw();
console.log('SUCCESS'); //I already made sure this is called
}
}
})
})
请注意,我已确保调用SUCCESS
日志。
知道为什么吗?
更新:
这是我的控制器
[HttpPost]
[ValidateAntiForgeryToken]
[ClaimAuthorize("Role", "Manager")]
public ActionResult Approve(int id)
{
_uow.TimeSheet.Approve(id, User.Identity.Name);
_uow.Save();
return Content("success");
}
这是我的控制台日志:
答案 0 :(得分:-1)
我猜你错了"语法"在$.ajax
来电中,您错过了complete
...
success !== complete
https://api.jquery.com/Ajax_Events/
使用ajaxStart,您可以使用load
或ajaxSetup
来发出请求并定义成功/错误方法的行为;
同样对于调试,请尝试ajaxStop()
并查看一切是否正常。
答案 1 :(得分:-1)
检查下面的完成,失败和始终回调。
$.ajax({
url: 'Your Url',
data: JSON.stringify(Parameter list),
type: 'POST',
contentType: 'application/json, charset=utf-8',
dataType: 'json',
beforeSend: function (xhr, opts) {
}
}).done(function (data) {
debugger;
}).fail(function (data) {
debugger;
}).always(function(data) {
alert("complete");
});
.ajax()。always(function(a,textStatus,b){});
替换jQuery 1.8中不推荐使用的方法.complete()。响应成功的事务,参数与.done()相同(即a = data,b = jqXHR),对于失败的事务,参数与.fail()相同(即a = jqXHR,b = errorThrown)。这是上面完整回调函数的替代构造。有关实现细节,请参阅deferred.always()。
请检查此链接:firing in Ajax call