Перехват AJAX с помощью функции XMLHttpRequest (GET)
В этой статье мы рассмотрим, как перехватывать AJAX-запросы, отправляемые с помощью XMLHttpRequest
(метод GET), и выполнять определённые действия при успешном добавлении товара в корзину или отправке формы обратной связи.
Так же скрипт перехватывает
Jquery
ajax запросы
Пример ajax (метод GET) на сайте wordpress
На сайте WordPress по нажатию на кнопку происходит AJAX-запрос на добавление товара в корзину. В консоли разработчика запрос выглядит так:/wp-admin/admin-ajax.php?method=add_item
Наша задача — отследить этот запрос и выполнить цель в Яндекс.Метрике, если URL запроса содержит строку method=add_item
.
Код для перехвата AJAX-запросов
1 |
|
Объяснение кода
1. Константы
1 |
|
SUCCESS_STATUS
: статус ответа, указывающий на успешное выполнение запроса.ADD_ITEM_METHOD_ID
: уникальный идентификатор для метода добавления товара.ADD_ITEM_METHOD_NAME
: название метода, который будет вызван для обработки события.YM_TARGET
: цель, которая будет передана в аналитику.
2. Список отслеживаемых URL
Массив trackedUrls
содержит объекты с параметрами для поиска и обработки запросов. Это позволяет легко добавлять новые события для отслеживания.
1 |
|
3. Методы для Яндекс.Метрики
Функция createAnalyticsMethods
возвращает объект с методами, которые вызывают ym
— функцию Яндекс.Метрики для отправки целей.
1 |
|
4. Переопределение XMLHttpRequest.send
1 |
|
- Сохраняем оригинальный метод
send
вrealSend
. - Переопределяем
send
, добавляя слушатель событияload
. - При завершении запроса проверяем URL и статус.
- Если запрос соответствует нужному событию, вызываем метод для отправки цели в Яндекс.Метрику.
- Вызываем оригинальный
send
для отправки запроса.
Итог
Данный подход позволяет перехватывать AJAX-запросы, отправляемые через XMLHttpRequest
, и выполнять нужные действия при успешном ответе сервера. Это удобно для аналитики пользовательских действий, например, добавления товара в корзину.