執行個體
當 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請求時方法樣板:
- $.ajax({
- type: "get",
- url: "",
- data : {},
- beforeSend : function(){
- },
- success : function(data){
- },
- complete : function(){
- }
- });
關於$.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回呼函數,在回呼函數中加上處理提示框。
使用全域事件的做法是:
- $(document).ajaxStart(onStart)
- .ajaxComplete(onComplete)
- .ajaxSuccess(onSuccess);
- function onStart(event) {
- //.....
- }
- function onComplete(event, xhr, settings) {
- //.....
- }
- function onSuccess(event, xhr, settings) {
- //.....
- }
ajax方法完整事件流
為了更直觀的說明,明河使用Axure畫了二個流程圖,畫的不好還請見諒,O(∩_∩)O
ajax方法完整事件流示範
為了讓朋友更容易理解整個事件流,明河做了以下demo。
明河共影