我已經使用jQuery的ajaxSend和ajaxStop顯示一個微調只要ajax請求活動。它可以工作,除非我的一些插件放棄了他們的ajax請求,ajaxStop不會觸發,並且只有在頁面刷新後纔會觸發。似乎中止的請求仍然計入jQuery。 我可以製作ajaxStop觸發器還是有更好的方法?觸發jQuery的ajaxStop事件當中止調用存在
3
A
回答
3
那麼我想出了一個我非常喜歡的方式。修補XMLHttpRequest中止方法,以便減少jQuery的ajax計數器,並在最後一次請求時觸發處理程序。還不確定它在不同瀏覽器上的效果如何。
var old_abort = XMLHttpRequest.prototype.abort;
XMLHttpRequest.prototype.abort = function(){
jQuery.proxy(old_abort, this)();
if (jQuery.active-- === 1)
jQuery.event.trigger("ajaxStop");
};
1
我會用complete事件,而不是 - 運行無論什麼:
完整(本地事件)
此事件 不管請求是否 成功,或者不叫。即使對於同步請求,您將會收到完整的回叫 ,即 。
$.ajax({
complete: function(){
// hide your spinner
}
});
不知道你是否需要這個,但你可以觸發的ajaxStop事件。 $(this).trigger('ajaxStop');
2
這似乎只能在jQuery的1.4.2的問題進行的dataType = 「JSON」,見http://forum.jquery.com/topic/ajaxstart-not-fired-when-jquery-active-changes-from-0-to-1
升級到jQuery的1.5.1或應用由傑克貼上面的補丁。此外,我必須修改該補丁,如下所示,才能正常工作:
f_abort = XMLHttpRequest.prototype.abort;
XMLHttpRequest.prototype.abort = function() {
$.proxy(f_abort, this)();
if ($.active === 1) {
$.event.trigger("ajaxStop");
$.active = 0;
} else if ($.active > 1) {
$.active--;
}
};
相關問題
- 1. 停止當前觸發過程中觸發jQuery事件?
- 2. ajaxstart觸發切換()事件,但無法觸發triger ajaxstop完成
- 3. JQUERY事件觸發不止一次,當使用委託jquery
- 4. jQuery防止觸發子事件時父級事件觸發
- 5. ajaxStop沒有觸發
- 6. 當調用函數時觸發事件
- 7. 如何在用戶停止觸發事件後觸發事件
- 8. jQuery ajaxStop()增加並多次觸發
- 9. 讓jquery ajaxStop每次只觸發一次
- 10. jQuery事件被觸發不止一次
- 11. JQuery - 防止觸發多個事件
- 12. 調用.css()後觸發事件(保存當前樣式)?
- 13. 當在android webview的jquerymobile中滑動時防止觸發事件被觸發
- 14. Jquery觸發事件
- 15. jquery觸發事件
- 16. MySQL在觸發器中停止事件
- 17. 停止在javascript中觸發onfocus事件
- 18. 如何觸發ajaxStart和ajaxStop
- 19. .ajaxStart和.ajaxStop沒有觸發
- 20. 如何在WinJS中觸發事件(相當於jQuery中的.trigger(「」))
- 21. 當通過fireEvent觸發「更改」事件時,jQuery事件未被調用
- 22. jQuery的ajaxStop事件停止任何Ajax回調運行時錯誤燒成後
- 23. 在C#中觸發事件阻止當前線程執行?
- 24. jQuery:僅當窗口被調整大小時觸發事件
- 25. jQuery的事件不觸發
- 26. 觸發jQuery的「tapout」事件
- 27. 如何停止在JQuery中觸發第二個更改事件?
- 28. 當在jQuery中調整大小()時,觸發多次觸發
- 29. jQuery的事件觸發 - 取消事件
- 30. jQuery事件;防止 「兄弟姐妹」,從觸發事件eachothers
據我所知,每當任何ajax事件完成時都會運行'complete'。這意味着如果我用它來隱藏我的微調器,當一個請求完成時即使其他人仍在運行,它也會隱藏。 – Jake 2010-06-28 07:22:28