.ajaxError()

.ajaxError( handler )返回类型:jQuery

描述:注册一个事件处理函数,当Ajax请求以一个错误完成时调用它。这是一个Ajax事件

每当一个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 ).ajaxError(function() {
$( ".log" ).text( "Triggered ajaxError handler." );
});

现在,利用任何jQuery方法制作一个Ajax请求:

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

用户点击按钮,当Ajax请求因请求的文件丢失而失败时,日志消息就会出现。

无论是哪个Ajax请求完成了,都会调用ajaxError处理函数。若要区分这些请求,请使用传递给处理函数的参数。每次执行一个ajaxError处理函数时,它都会传递事件对象、jqXHR(jQuery 1.5以前是XHR对象)以及在创建请求时使用的设置对象。当发生一个HTTP错误时,第四个参数(thrownError)接受HTTP状态的文本部分,譬如“Not Found”,或者“Internet Server Error”。例如,若要限定错误回调函数只处理与特定URL有关的事件:

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

补充说明:

  • 自从jQuery 1.9以来,所有的针对jQuery全局Ajax事件的处理函数,包括用.ajaxError()方法添加的那些处理函数,必须附加到document
  • 如果调用$.ajax()$.ajaxSetup(),其global选择被设置为false,则不会引发.ajaxError()方法。

示例:

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

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