ajaxSend 事件


.on( "ajaxSend", handler )傳回:jQuery

說明:附加一個函式,在傳送 Ajax 要求之前執行。這是一個 Ajax 事件

此頁面說明 ajaxSend 事件。有關已棄用的 .ajaxSend() 方法,請參閱 .ajaxSend()

每當 Ajax 要求即將傳送時,jQuery 會觸發 ajaxSend 事件。此時會執行所有已註冊的 ajaxSend 處理常式。

若要觀察此方法的動作,請設定一個基本的 Ajax 載入要求

1
2
3
<div class="trigger">Trigger</div>
<div class="result"></div>
<div class="log"></div>

將事件處理常式附加到文件

1
2
3
$( document ).on( "ajaxSend", function() {
$( ".log" ).text( "Triggered ajaxSend handler." );
} );

現在,使用任何 jQuery 方法發出 Ajax 要求

1
2
3
$( ".trigger" ).on( "click", function() {
$( ".result" ).load( "ajax/test.html" );
} );

當使用者按一下具有 trigger 類別的元素,且 Ajax 要求即將開始時,會顯示記錄訊息。

所有 ajaxSend 處理常式都會被呼叫,不論要傳送哪個 Ajax 要求。如果您必須區分要求,請使用傳遞給處理常式的參數。每次執行 ajaxSend 處理常式時,都會傳遞事件物件、jqXHR 物件(在版本 1.4 中為 XMLHttpRequest 物件)以及在建立 Ajax 要求時使用的 設定物件。例如,您可以限制回呼,僅處理與特定 URL 相關的事件

1
2
3
4
5
$( document ).on( "ajaxSend", function( event, jqxhr, settings ) {
if ( settings.url == "ajax/test.html" ) {
$( ".log" ).text( "Triggered ajaxSend handler." );
}
} );

其他注意事項

  • 從 jQuery 1.9 開始,所有 jQuery 全域 Ajax 事件 的處理常式,包括使用 .on( "ajaxSend", ... ) 新增的處理常式,必須附加到 document
  • 如果 $.ajax()$.ajaxSetup() 被呼叫,且 global 選項設定為 false,則 ajaxSend 事件不會觸發。

範例

在傳送 Ajax 要求之前顯示訊息。

1
2
3
$( document ).on( "ajaxSend", function( event, request, settings ) {
$( "#msg" ).append( "<li>Starting request at " + settings.url + "</li>" );
} );