.ajaxError()

エラーでAjaxリクエストが完了した際に呼び出されるハンドラを登録します。これはAjaxEventです。

.ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) )

戻り値:jQuery

引数説明
handler(event, jqXHR, ajaxSettings, thrownError)

型:Function()

実行する関数を指定します。

Ajaxリクエストが失敗した際に、jQueryはajaxErrorイベントをトリガします。 .ajaxError()メソッドによって登録されたハンドラが、この際に実行されます。

このメソッドの処理を観察するには、基本的なAjax loadリクエストを設定します。

<div class="trigger">トリガ</div>
<div class="result"></div>
<div class="log"></div>

documentに対して、イベントハンドラを登録します。

$(document).ajaxError(function() {
  $( "div.log" ).text( "ajaxErrorがトリガされました。" );
});

そして、任意のjQueryメソッドからAjaxリクエストを行います。 ユーザーがtrigeerクラスの要素をクリックし、Ajaxリクエストが失敗(リクエスト先のページが無いため)すると、ログメッセージが表示されます。

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

注: .ajaxError()は、jQueryオブジェクトのインスタンスのメソッドとして実装されているため、thisを使用して、 選択した要素をコールバック関数内で参照することが出来ます。 しかしjQuery1.8で、.ajaxError()メソッドはdocumentのみにしか使用できなくなりました。

全てのajaxErrorハンドラは、どんなAjaxリクエストであろうとエラーになれば実行されます。 ajaxErrorが実行される際に、eventオブジェクト、jqXHRオブジェクト(jQuery1.5より前は、XHRオブジェクト)、リクエストに使用された設定(settings)オブジェクトが渡されます。 javaScriptが例外を発生させてリクエストが失敗した場合、例外オブジェクトが4つ目の引数として渡されます。

例えば、特別なURLに対してのみエラーのコールバック関数内で処理を行いたい場合は、次のようにします。

$( document ).ajaxError(function(event, jqxhr, settings, exception) {
  if ( settings.url == "ajax/missing.html" ) {
    $( "div.log" ).text( "ajaxErrorがトリガされました。" );
  }
});

追記: もし、$.ajax()または、$.ajaxSetup()によってglobalオプションをfalseに指定されていれば、 .ajaxError()はトリガされません。

例:Ajaxのリクエストが失敗した際に、メッセージを表示します。

$(document).ajaxError(function(event, request, settings) {
  $( "#msg" ).append( "<li>リクエストが失敗したページ: " + settings.url + "</li>" );
});

 Back to top

© 2010 - 2017 STUDIO KINGDOM