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>" );
} );