как узнать, является ли запрос ajax в asp.net mvc?

108

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

Ома
источник
2
Вы также можете использовать Fiddler для просмотра запросов. Так вы многому научитесь.
CrazyDart 05

Ответы:

70

Все вызовы AJAX, выполняемые jQuery, будут иметь заголовок, указывающий, что это AJAX. Заголовок для проверки есть X-Requested-With, и значение будет, XMLHttpRequestкогда это вызов AJAX.

Обратите внимание, что запросы AJAX являются обычными GET или POST, поэтому, если вы (или ваша библиотека AJAX, например jQuery) не добавляете дополнительный заголовок в запрос, невозможно точно узнать, является ли это AJAX или нет.

RedFilter
источник
3
@Omu: Request.Headers["X-Requested-With"]или подобное. Проверьте MSDN. Заголовки всегда связаны с запросами.
Роберт Коритник 05
179

Также существует проблема, Request.IsAjaxRequestесли вы используете более позднюю версию MVC. У меня больше нет версии 1, поэтому я не могу сказать, находится ли она в версии 1.

Если вам нужна эта проверка в Global.asax.cs, попробуйте следующее: new HttpRequestWrapper(Request).IsAjaxRequest()

Сборка началась
источник
1
@BuildStarted Мне нужна эта проверка в Global.asax.cs, так что это мне не поможет
Ому
2
@BuildStarted недоступен в Application_Error
Ому
1
Да, ты прав. Это потому, что он находится вне MVC и не использует HttpRequestBase. В этом мне не было нужды, поэтому я не смотрел слишком глубоко. Спасибо за внимание.
Сборка началась
20
новый HttpRequestWrapper (Запрос) .IsAjaxRequest ();
1
Кстати: если вы находитесь внутри настраиваемого фильтра авторизации, используйте это, чтобы получить метод IsAjaxRequest по запросу: filterContext.HttpContext.Request.IsAjaxRequest
user1068352,
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()
Morgs