jquery的ajax全局事件和AJAX 請求正在進行時顯示“正在加載”


實例

當 AJAX 請求正在進行時顯示“正在加載”的指示:

$("#txt").ajaxStart(function(){
  $("#wait").css("display","block");
});
$("#txt").ajaxComplete(function(){
  $("#wait").css("display","none");
});
 
 
 

jquery的ajax全局事件詳解—明河談jquery(原文地址:http://www.36ria.com/2882)

jquery在ajax方面是非常強大和方便的,以下是jquery進行ajax請求時方法模板:

  1. $.ajax({
  2. type: "get",
  3. url: "",
  4. data : {},
  5. beforeSend : function(){
  6. },
  7. success : function(data){
  8. },
  9. complete : function(){
  10. }
  11. });

關於$.ajax()方法的使用,不是明河寫這篇文章的目的,今天明河主要講解當進行ajax請求時整個完整的事件流程。

jquery的ajax方法的全部全局事件:
  • ajaxStart:ajax請求開始前
  • ajaxSend:ajax請求時
  • ajaxSuccess:ajax獲取數據后
  • ajaxComplete:ajax請求完成時
  • ajaxError:ajax請求發生錯誤后
  • ajaxStop:ajax請求停止后

當你使用jquery的ajax方法,不管是$.ajax()、$.get()、$.load()、$.getJSON()等都會默認觸發全局事件,只是通常不綁定全局事件,但實際上這些全局事件非常有用處。

ajax方法的全局事件的用處

ajax全局事件,有個典型的應用場合:
你的頁面存在多個甚至為數不少的ajax請求,但是這些ajax請求都有相同的消息機制。ajax請求開始前顯示一個提示框,提示“正在讀取數據“;ajax請求成功時提示框顯示“數據獲取成功”;ajax請求結束后隱藏提示框。
不使用全局事件的做法是:
給$.ajax()加上beforeSend、success、complete回調函數,在回調函數中加上處理提示框。
使用全局事件的做法是:

  1. $(document).ajaxStart(onStart)
  2.                .ajaxComplete(onComplete)
  3.                .ajaxSuccess(onSuccess);
  4. function onStart(event) {
  5. //.....
  6. }
  7. function onComplete(event, xhr, settings) {
  8. //.....
  9. }
  10. function onSuccess(event, xhr, settings) {
  11. //.....
  12. }
ajax方法完整事件流

為了更直觀的說明,明河使用Axure畫了二個流程圖,畫的不好還請見諒,O(∩_∩)O

ajax方法完整事件流演示

為了讓朋友更容易理解整個事件流,明河做了以下demo。

明河共影


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM