# .ajaxError()

所属分类：Ajax > 全局 Ajax 事件处理器 英文文档：.ajaxError()

## .ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) )返回: jQuery

描述: Ajax请求出错时注册一个回调处理函数，这是一个 Ajax Event。

- #### 添加的版本: 1.0.ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) )

  - handler(event, jqXHR, ajaxSettings, thrownError)
    类型: Function()
    被调用的函数。

每当一个Ajax请求出错时，jQuery就会触发`ajaxError`事件，在这个时间点所有处理函数会使用`.ajaxError()`方法注册并执行。注意:这里的handler处理器调用跨域的脚本和跨域的JSONP请求。

观察这种方法，建立一个基本的Ajax加载请求：

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

在document上绑定事件处理器：

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

现在，我们可以使用任何的jQuery方法构建一个Ajax请求：

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

当用户点击按钮并且Ajax请求失败，因为所请求的文件不存在，这个信息就会显示。

但是从 jQuery 1.8 开始, `.ajaxComplete()` 方法只能绑定到 `document`元素.

注，这段在官网的原文中已经被删除: 因为`.ajaxComplete()` 是作为一个jQuery对象实例方法去执行的，回调函数中，我们可以用`this`关键字作为指定的元素。

无论哪一个Ajax请求被完成，所有`ajaxError`处理器都将被执行。如果我们必须区分不同的请求,我们可以使参数传递给这个处理器。 他是通过事件对象、 `XMLHttpRequest` 对象和设置对象中使用的请求，每次`ajaxError` 处理器执行，它传递事件对象，`jqXHR`对象（在 jQuery 1.5之前是`XHR`对象），和用来创建请求的设置（settings）对象。如果请求失败，因为JavaScript抛出一个异常，并且作为第四个参数的异常对象被传递给处理函数。举个例子,我们能限制我们的回调到只处理事件处理某一特定的URL:

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

### 其他注意事项：

- 如果`global`选项设置为`false`，调用`$.ajax()` 或 `$.ajaxError()`方法将不会被触发。

## 例子:

#### 当Ajax请求失败后显示一个信息.

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