2011-10-18 11 views
9

これは回避するのは簡単ですが、グローバルなAjax設定でラップされているといいでしょう。jquery ajax - グローバル設定。 ajax呼び出しをトリガするイベント/要素を知ることは可能ですか?

私はajax呼び出しを実行すると、どの要素/イベントがajax呼び出しをトリガーするのか知りたいのですがbeforeSendオプションで指定します。

これを行う簡潔な方法はありますか?ここで

Global Ajax Event Handlers

これらの方法は、このような初期化または完了など、特定のイベントが、ページ上の任意のAJAX要求のための場所を取るときに呼び出されるハンドラを登録

答えて

8

beforeSendコールバックには、XMLHTTPRequestインスタンスと現在のAJAX呼び出しで使用される設定の2つの引数があります。

$.ajaxSetup({ 
    beforeSend: function(xhr, settings) { 
     var element = settings.context.element; 
     var event = settings.context.event; 

     // Do something with 'element' and 'event'... 
    } 
}); 

$("selector").click(function(e) { 
    $.ajax("url", { 
     // your settings, 
     context: { 
      element: this, 
      event: e 
     } 
    }); 
}); 
:あなたは contextオプションで、トリガー要素とイベントを渡すと

そのため、彼らはあなたがグローバル設定でそれを定義した場合でもbeforeSendに利用できるようになります

0

スタート。 jQuery.ajaxSetup()のグローバルプロパティがtrueの場合、各AJAXリクエストでグローバルイベントが発生します。これはデフォルトです。注意:グローバルイベントは、グローバルの値に関係なく、クロスドメインスクリプトまたはJSONPリクエストに対しては発生しません。

.ajaxComplete() // initialize in for all ajax request and set event in jQuery.ajaxSetup() 

.ajaxComplete() - Ajaxリクエストが完了したときに呼び出されるハンドラを登録します。これはAjaxイベントです。

関連する問題