2013-06-07 10 views
5

AJAXリクエストのグローバルハンドラを設定したいのですが、POSTの場合のみです。

残念ながらグローバルハンドラ$.ajaxStart()$.ajaxStop()はすべてのリクエストに対して起動しますが、わかっている限り、ハンドラ関数に渡されるパラメータはありません。ほとんどのjQueryのドキュメントが書かれているように、ドキュメンテーションも不足しています。

グローバルajaxハンドラ内からリクエストタイプを検出できますか?

+0

に私はそう思うドントとしてjQuery.ajaxPrefilterを使用することです。すべてのajax呼び出しが終了した場合はajaxStopが呼び出されますが、複数の要求があった場合はどのような要求タイプにする必要がありますか。 – luk2302

答えて

5

をあなたの代わりにこれらのイベントを使用する必要がありますすることができます、ajaxSend() ajaxSendを使用してajaxComplete()

$(document).ajaxSend(function (event, xhr, options) { 
    if (options.type.toUpperCase() === "POST") console.log('POST request');; 
}).ajaxComplete(function (event, xhr, options) { 
    if (options.type.toUpperCase() === "POST") console.log('POST request'); 
}); 

を依然としてリクエストを中止します:xhr.abort()

EDIT:

ベター@ DemoUserの答え

+0

ありがとう! '$ .ajaxStart()'がキュー全体に対して一度起動されるので、型自体はなく、 '$ .ajaxSend()'はリクエストごとに起動されるため、要求タイプ? – George

+0

ええ、正しい声明のようです –

5

私はあなたがこのような何かを行うことができると思います:

jQuery.ajaxPrefilter(function(options) { 
    if(options.type !== 'POST') { 
     options.global = false; 
    } 
}); 

を参照してください:: jQuery prefilters

+0

確かに、それは受け入れられた答えでなければなりません:) –

関連する問題