ajaxError 事件


.on( "ajaxError", handler )返回值: jQuery

描述: 当 Ajax 请求完成并出现错误时,注册一个要调用的处理程序。这是一个 Ajax 事件

此页面描述了 ajaxError 事件。有关已弃用的 .ajaxError() 方法,请参阅 .ajaxError()

每当 Ajax 请求完成并出现错误时,jQuery 都会触发 ajaxError 事件。此时将执行所有已注册的 ajaxError 处理程序。注意:此处理程序不会针对跨域脚本和跨域 JSONP 请求调用。

要观察此方法的实际操作,请设置一个基本的 Ajax 加载请求。

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

将事件处理程序附加到文档

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

现在,使用任何 jQuery 方法发出 Ajax 请求

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

当用户单击按钮并且 Ajax 请求失败时,因为请求的文件丢失,日志消息将显示。

所有 ajaxError 处理程序都会被调用,无论完成的是哪个 Ajax 请求。要区分请求,请使用传递给处理程序的参数。每次执行 ajaxError 处理程序时,它都会传递事件对象、jqXHR 对象(在 jQuery 1.5 之前,是 XHR 对象)以及用于创建请求的设置对象。当发生 HTTP 错误时,第四个参数 (thrownError) 将接收 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。例如,要将错误回调限制为仅处理与特定 URL 相关的事件

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

附加说明

  • 从 jQuery 1.9 开始,所有针对 jQuery 全局 Ajax 事件 的处理程序,包括使用 .on( "ajaxError", ... ) 添加的处理程序,必须附加到 document
  • 如果 $.ajax()$.ajaxSetup() 被调用时,global 选项设置为 false,则 ajaxError 事件将不会触发。

示例

当 Ajax 请求失败时显示一条消息。

1
2
3
$( document ).on( "ajaxError", function( event, request, settings ) {
$( "#msg" ).append( "<li>Error requesting page " + settings.url + "</li>" );
} );