РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
188 of 1361 menu

Метод isXmlHttpRequest

Метод isXmlHttpRequest класса Request возвращает true, если текущий HTTP-запрос был инициирован через JavaScript-объект XMLHttpRequest (AJAX), и false в противном случае. Метод не принимает параметров. Он проверяет наличие заголовка X-Requested-With со значением XMLHttpRequest, который автоматически добавляется большинством JavaScript-библиотек при AJAX-запросах.

Синтаксис

public function isXmlHttpRequest(): bool

Пример

Давайте проверим, является ли запрос AJAX-запросом, и вернём соответствующий ответ:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { if ($request->isXmlHttpRequest()) { return new Response('ajax request'); } return new Response('regular request'); } } ?>

Результат выполнения кода для AJAX-запроса:

"ajax request"

Результат выполнения кода для обычного запроса:

"regular request"

Пример

Давайте отправим AJAX-запрос через JavaScript с использованием объекта XMLHttpRequest:

<script> const xhr = new XMLHttpRequest(); xhr.open('GET', '/article'); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.onload = function () { console.log(xhr.responseText); }; xhr.send(); </script>

Результат выполнения кода в консоли браузера:

"ajax request"

Пример

Давайте используем метод в связке с другими методами класса Request для обработки AJAX-запроса с параметрами:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/data', name: 'article_data')] public function data(Request $request): JsonResponse { $res = [ 'ajax' => $request->isXmlHttpRequest(), 'method' => $request->getMethod(), 'uri' => $request->getRequestUri(), ]; return new JsonResponse($res); } } ?>

Результат выполнения кода для AJAX-запроса:

{"ajax": true, "method": "GET", "uri": "/article/data"}

Смотрите также

  • класс Request,
    который представляет HTTP-запрос
  • метод getMethod,
    который возвращает метод HTTP-запроса
  • метод getRequestUri,
    который возвращает URI запроса
  • метод getPayload,
    который возвращает тело запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить