2015-10-05 43 views
2

我有這個問題,我不是所有的ajaxComplete調用都被解僱了。ajaxComplete not firing

我的代碼

$(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日誌被調用。

任何想法爲什麼?

UPDATE:

這裏是我的控制器

[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

+0

有沒有在你的瀏覽器控制檯 –

+0

在控制檯中的任JS錯誤的錯誤:'VAR節點= $(本)。家長(「TR」);'我覺得這應該有一些問題。 – Jai

+0

如果您的POST調用實際上成功,請檢查您的開發工具(F12)控制檯選項卡,如果網絡選項卡中存在任何JS錯誤(或)。 – Arkantos

回答

-1

我猜你在$.ajax調用不正確的 「語法」,你錯過了complete ...

success !== complete

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

隨着ajaxStart您可以使用loadajaxSetup爲發出請求,並定義的成功/錯誤方法的行爲;

也用於調試,請嘗試ajaxStop(),看看是否一切正常。

+0

_ajaxSetup _....真的嗎? – Jai

+0

是的,這是一種做法。它可能是舊的? @Jai – davesnx

+0

不建議使用它。 – Jai

-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"); 
}); 

阿賈克斯()總是(函數(一,textStatus,B){})。

取代jQuery 1.8中不贊成使用的方法.complete()。爲了響應成功的事務,參數與.done()相同(即a = data,b = jqXHR),對於失敗的事務,參數與.fail()相同(即a = jqXHR,b = errorThrown)。這是上述完整回調函數的另一種構造。有關實現細節,請參閱deferred.always()。

請點擊此鏈接:firing in Ajax call