як дізнатися, чи є запит ajax в asp.net mvc?


108

хто-небудь, як я можу дізнатися, чи запит є Ajax? (Я використовую jquery для ajax)


2
Ви також можете використовувати Fiddler для перегляду запитів. Ви багато чого навчитесь, роблячи це.
CrazyDart

Відповіді:


70

До всіх дзвінків AJAX, здійснених jQuery, буде доданий заголовок, який вказує, що це AJAX. Заголовок для перевірки є X-Requested-With, і значення буде, XMLHttpRequestколи це буде виклик AJAX.

Зауважте, що запити AJAX - це звичайні GET або POST, тому, якщо ви (або ваша бібліотека AJAX, як jQuery) додаєте в запит додатковий заголовок, немає можливості точно знати, чи це AJAX чи ні.


3
@Omu: Request.Headers["X-Requested-With"]або подібне. Перевірте MSDN. Заголовки завжди пов'язані із запитами.
Роберт Коритник

179

Існує також, Request.IsAjaxRequestякщо ви використовуєте більш пізню версію MVC. У мене вже немає версії 1, тому я не можу сказати, чи є вона у версії 1.

Якщо вам потрібен цей чек на Global.asax.cs, спробуйте це: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted Мені потрібна ця перевірка в Global.asax.cs, тому це мені не допоможе
Omu

2
@BuildStarted недоступний у програмі Application_Error
Omu

1
Так, ти маєш рацію. Це тому, що він знаходиться поза MVC і не використовується HttpRequestBase. У мене не було потреби в цьому, тому я не заглядав занадто глибоко. Дякую за голову вгору
Buildstarted

20
новий HttpRequestWrapper (Запит) .IsAjaxRequest ();

1
BTW: Якщо ви знаходитесь у власному фільтрі авторизації, використовуйте це, щоб отримати метод IsAjaxRequest на запит: filterContext.HttpContext.Request.IsAjaxRequest
користувач1068352

51

Він працює для мене в ASP.NET MVC 3

if (Request.IsAjaxRequest())
{
     // ajax request handled
}

1
Це недоступно в Application_Error
ajbeaven

1
Це недоступно в Application_BeginRequest
Varadha31590,

У Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Моргс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.