ajaxComplete没有开火

时间:2015-10-05 07:00:00

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-5

我遇到了这个问题,并非我的所有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");
}

这是我的控制台日志:

enter image description here

2 个答案:

答案 0 :(得分:-1)

我猜你错了"语法"在$.ajax来电中,您错过了complete ...

success !== complete

https://api.jquery.com/Ajax_Events/

使用ajaxStart,您可以使用loadajaxSetup来发出请求并定义成功/错误方法的行为;

同样对于调试,请尝试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