• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ajaxError()

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

    .ajaxError(handler)

    handler。类型:Function(Eventevent,jqXHRjqXHR,PlainObjectajaxOptions)。被调用的函数。

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

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

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

    在document上绑定事件处理器:

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

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

    $( "button.trigger" ).click(function() {
      $( "div.result" ).load( "ajax/missing" );
    });
    

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

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

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

    其他注意事项:

    • 在jQuery1.9中,jQuery全局AJAX事件的所有处理程序,包括哪些.ajaxError()添加的方法,必须附加到document上。
    • 如果$.ajax()$.ajaxSetup()调用时,global选项设置为false.ajaxError()将不会触发。

    例子

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

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

    上篇:ajaxSuccess()