1.這些方法用於注冊事件處理器,用來處理頁面上的任何 Ajax 請求,當某些事件觸發后,這些事件處理器被調用。如果jQuery.ajaxSteup()中的 global
屬性被設置為 true
(這也是默認設置),那么,每個 Ajax 請求都會觸發全局事件。注意:全局事件絕對不會被跨域(cross-domain)腳本或 JSONP 請求觸發,和 global
屬性的設置毫無關系。
2. .ajaxComplete()方法:每當一個Ajax請求完成,jQuery就會觸發ajaxComplete
事件,在這個時間點所有處理函數會使用.ajaxComplete()
方法注冊並執行。如果global屬性被設置為false,當完成Ajax請求后不會調用這個方法。
無論哪一個Ajax請求被完成,所有ajaxComplete
處理函數都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理函數。 他是通過事件對象, XMLHttpRequest
對象和設置對象中使用的請求,做每一次ajaxComplete
處理器執行的。舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:
$(document).ajaxComplete(function(event, xhr, settings) {
if ( settings.url === "ajax/test.html" ) {
$( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
xhr.responseHTML );
}
});
當Ajax請求完成后顯示一個信息:
$(document).ajaxComplete(function(event,request, settings) { $( "#msg" ).append( "<li>請求完成。</li>" ); });
3. .ajaxError()方法:每當一個Ajax請求出錯時,jQuery就會觸發ajaxError
事件,在這個時間點所有處理函數會使用.ajaxError()
方法注冊並執行。注意:這里的handler處理器調用跨域的腳本和跨域的JSONP請求。如果global屬性被設置為false,當完成Ajax請求失敗后不會調用這個方法。
無論哪一個Ajax請求被完成,所有ajaxError
處理器都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理器。 他是通過事件對象、 XMLHttpRequest
對象和設置對象中使用的請求,每次ajaxError
處理器執行,它傳遞事件對象,jqXHR
對象(在 jQuery 1.5之前是XHR
對象),和用來創建請求的設置(settings)對象。如果請求失敗,因為JavaScript拋出一個異常,並且作為第四個參數的異常對象被傳遞給處理函數。舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:
$( document ).ajaxError(function(event, jqxhr, settings, exception) {
if ( settings.url == "ajax/missing.html" ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
}
});
當Ajax請求失敗后顯示一個信息:
$(document).ajaxError(function(event, request, settings) { $( "#msg" ).append( "<li>Error requesting page " + settings.url + "</li>" ); });
4. .ajaxSend()方法:每當一個Ajax請求即將發送,jQuery就會觸發ajaxSend
事件,在這個時間點所有處理函數都會使用.ajaxSend()
方法注冊並執行。如果global
選項設置為false
,調用$.ajax()
或$.ajaxStep()
方法將不會被觸發。
無論哪一個Ajax請求被發送,所有ajaxSend
處理器都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理器。 每次ajaxSend
處理器執行,它傳遞事件對象,jqXHR
對象(在 jQuery 1.4中是XMLHttpRequest
對象),和用來創建請求的設置(settings object)對象。如果請求失敗,因為JavaScript拋出一個異常,並且作為第四個參數的異常對象被傳遞給處理程序。舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:
$(document).ajaxSend(function(event, jqxhr, settings) {
if ( settings.url == "ajax/test.html" ) {
$( ".log" ).text( "Triggered ajaxSend handler." );
}
});
當Ajax請求即將發送前顯示一個信息:
$(document).ajaxSend(function(event, request, settings) { $( "#msg" ).append( "<li>Starting request at " + settings.url + "</li>" ); });
5. .ajaxStart()方法:每當一個Ajax請求即將發送,jQuery檢查是否有任何其他響應過程中的Ajax請求(注:未完成的請求)。如果沒有檢查到,jQuery就會觸發ajaxStart
事件,在這個時間點所有處理函數都會使用.ajaxStart()
方法注冊並執行。如果global
選項設置為false
,調用$.ajax()
或$.ajaxStep()
方法將不會被觸發。
當Ajax請求開始發送時顯示一個信息 (沒有一個Ajax請求是已經激活的):
$(document).ajaxStart(function() {
$( "#loading" ).show();
});
6. .ajaxStop()方法:每當一個Ajax請求完成,jQuery檢查是否有任何其他響應過程中的Ajax請求(注:未完成的請求)。如果都執行完成,jQuery就會觸發ajaxStop
事件,在這個時間點所有處理函數都會使用.ajaxStop()
方法注冊並執行。如果一個未處理完成的Ajax請求用beforeSend
回調函數返回false
取消,ajaxStop
事件也被觸發。如果global
選項設置為false
,調用$.ajax()
或$.ajaxStep()
方法將不會被觸發。
在Ajax請求停止后隱藏加載信息:
$(document).ajaxStop(function() {
$( "#loading" ).hide();
});
7. .ajaxSuccess()方法:每當一個Ajax請求成功完成,jQuery就會觸發ajaxSuccess
事件,在這個時間點所有處理函數都會使用.ajaxSuccess()
方法注冊並執行。如果global
選項設置為false
,調用$.ajax()
或$.ajaxStep()
方法將不會被觸發。
無論哪一個Ajax請求被完成,所有ajaxSuccess
處理器都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理器。 他是通過事件對象、 XMLHttpRequest
對象和設置對象中使用的請求,做每一次ajaxSuccess
處理器執行的。 舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:
$(document).ajaxSuccess(function(event, xhr, settings) {
if ( settings.url == "ajax/test.html" ) {
$( ".log" ).text( "Triggered ajaxSuccess handler. The ajax response was: " +
xhr.responseText );
}
});
當Ajax請求成功完成時,顯示一個信息:
$(document).ajaxSuccess(function(event, request, settings) { $( "#msg" ).append( "<li>Successful Request!</li>" ); });