這是一個全局AJAX事件函數,用于為任何AJAX請求的ajaxSend事件綁定事件處理函數。當AJAX請求即將被發送時,將觸發ajaxSend事件,并執行綁定的事件處理函數。
該函數必須在jQuery對象實例上調用,ajaxSend()將為每個匹配元素的ajaxSend事件綁定處理函數。當AJAX請求即將被發送完成后,所有匹配元素上的處理函數都將被觸發執行。事件處理函數內的this將指向當前DOM元素。
你可以在同一元素多次調用該函數,從而綁定多個事件處理函數。觸發ajaxSend事件時,jQuery會按照綁定的先后順序依次執行綁定的事件處理函數。
從jQuery 1.8開始,該函數只能為document對象的ajaxSend事件綁定處理函數,為其他元素綁定的事件處理函數不會起作用。
如果在jQuery.ajax()或jQuery.ajaxSetup()中將選項參數global設為false,可以禁止該AJAX請求觸發全局的AJAX事件。
該函數屬于jQuery對象(實例)。
語法
jQuery 1.0 新增該函數。
jQueryObject.ajaxSend( handler )
參數
參數 描述
handler Function類型觸發該事件時,需要執行的事件處理函數。
回調函數handler有3個參數:其一是表示當前事件的Event對象,其二是發送當前AJAX請求的jqXHR對象,其三是包含為本次AJAX請求設置的所有參數選項(包括無需指定的默認參數選項)的Object對象。
jqXHR對象就是經過jQuery封裝的XMLHttpRequest對象(保留了其大多數屬性和方法)。
返回值
ajaxSend()函數的返回值為jQuery類型,返回當前jQuery對象本身。
示例&說明
請參考以下HTML示例代碼:
<div id="content1">CodePlayer</div>
<div id="content2">專注于編程開發技術分享</div>
<div id="content3">http://www.365mini.com</div>
以下是與ajaxSend()函數相關的jQuery示例代碼,以演示ajaxSend()函數的具體用法:
以下代碼請基于1.8之前版本的jQuery來運行(請注意,通過ajaxSend()設置的全局事件處理函數與通過$.ajax()的beforeSend選項設置的局部事件處理函數,它們的參數是不同的)。
//當前 jQuery版本:1.7.2 (必須是1.8之前的版本) $("div").ajaxSend( function(event, jqXHR, options){ alert("處理函數1: 當前元素的id為" + this.id + ",請求的url為" + options.url); } ); $("div").ajaxSend( function(event, jqXHR, options){ alert("處理函數2:請求方式為" + options.type); } ); // 執行該AJAX請求,會彈出6次對話框 // 因為當前頁面有3個div元素,我們為每個div元素綁定了2個事件處理函數 $.ajax( { url: "index.html" } ); // 執行該AJAX請求,會彈出7次對話框 // 因為當前頁面有3個div元素,我們為每個div元素綁定了2個事件處理函數 // 此外$.ajax()自己通過beforeSend選項綁定了一個局部的ajaxSend事件處理函數,它會執行一次 // 因此總共彈出7次對話框 $.ajax( { url: "myurl" , beforeSend: function(jqXHR, options){ alert( "即將開始發送!" ); // return false; // 如果返回false,可以取消本次請求 } } );
如果當前jQuery為1.8及以上版本,上述jQuery代碼總共只會彈出一次對話框。因為從jQuery 1.8開始,ajaxSend事件的處理函數必須綁定到document對象上才能生效。
因此,不論當前jQuery為何版本,如果不是特殊需求,我們都應該將ajaxSend事件的處理函數綁定到document對象上。
$(document).ajaxSend( function(event, jqXHR, options){ alert("處理函數1: 當前元素的id為" + this.id + ",請求的url為" + options.url); } ); $(document).ajaxSend( function(event, jqXHR, options){ alert("處理函數2:請求方式為" + options.type); } ); // 執行該AJAX請求,會彈出2次對話框 // 因為document對象上綁定了2個事件處理函數 $.ajax( { url: "index.html" } ); // 執行該AJAX請求,會彈出3次對話框 // 因為$.ajax()自己通過beforeSend選項綁定了一個局部的ajaxSend事件處理函數,它會執行一次 // 我們還通過ajaxSend()額外綁定了兩個事件處理函數,會再彈出2次 $.ajax( { url: "myurl" , // global: false , // 可以禁止觸發全局的Ajax事件 beforeSend: function(jqXHR, options){ alert( "即將開始發送!" ); // return false; // 如果返回false,可以取消本次請求 } } );
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com