リクエストがasp.net mvcのajaxかどうかを知る方法は?


108

誰がリクエストがajaxかどうかどうやって知ることができますか?(私はajaxにjqueryを使用しています)


2
Fiddlerを使用してリクエストを監視することもできます。これを行うことで多くのことを学びます。
CrazyDart

回答:


70

jQueryによって行われるすべてのAJAX呼び出しには、AJAXであることを示すヘッダーが追加されます。チェックするヘッダーはX-Requested-Withで、値はXMLHttpRequestAJAX呼び出しの場合になります。

AJAXリクエストは通常​​のGETまたはPOSTであるため、あなた(またはjQueryのようなAJAXライブラリ)がリクエストに追加のヘッダーを追加しない限り、それがAJAXであるかどうかを確実に知る方法はありません。


3
@Omu:Request.Headers["X-Requested-With"]または類似。MSDNを確認してください。ヘッダーは常にリクエストに関連しています。
Robert Koritnik

179

Request.IsAjaxRequest新しいバージョンのMVCを使用している場合もあります。バージョン1はもう使用していないので、バージョン1かどうかはわかりません。

Global.asax.csでこのチェックが必要な場合は、次のことを試してください。 new HttpRequestWrapper(Request).IsAjaxRequest()


1
これが私を助けにはなりませんので、私はGlobal.asax.csには、このチェックが必要@BuildStarted
OMU

2
@BuildStartedはのApplication_Errorでは利用できません
OMU

1
ええ、あなたは正しいです。これは、MVCの外部にあり、を利用していないためHttpRequestBaseです。私はそれを必要としていなかったので、あまり深く見ていませんでした。ヘッドアップをありがとう。
秒にビルド開始

20
新しいHttpRequestWrapper(Request).IsAjaxRequest();

1
ところで、カスタム認証フィルターの内部にいる場合は、これを使用してリクエストのIsAjaxRequestメソッドを取得します:filterContext.HttpContext.Request.IsAjaxRequest
user1068352

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.