.ajaxSend()

Ajaxリクエストが送信される直前に実行したい関数を指定します。これはAjaxEventです。

.ajaxSend( handler(event, jqXHR, ajaxOptions) )

戻り値:jQuery

引数説明
handler(event, XMLHttpRequest, ajaxOptions)

型:Function()

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

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

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

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

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

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

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

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

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

全てのajaxSendハンドラは、どんなAjaxリクエストであろうと送信されれば実行されます。 もし、リクエストを識別する必要がある場合は、ハンドラに渡されるパラメータを参照します。 ajaxSendが実行される際に、eventオブジェクト、XMLHttpRequestオブジェクト、リクエストに使用された設定(settings)オブジェクトが渡されます。

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

$(document).ajaxSend(function(event, jqxhr, settings) {
  if ( settings.url === "ajax/test.html" ) {
    $( ".log" ).text( "ajaxSendをトリガ。);
  }
});

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

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

$(document).ajaxSend(function(event,request, settings) {
   $( "#msg" ).append( "<li>" + settings.url + "にリクエスト開始。</li>"  );
 });

 Back to top

© 2010 - 2017 STUDIO KINGDOM