Перехват AJAX с помощью функции XMLHttpRequest (GET)
В этой статье мы рассмотрим, как перехватывать AJAX-запросы, отправляемые с помощью XMLHttpRequest (метод GET), и выполнять определённые действия при успешном добавлении товара в корзину или отправке формы обратной связи.
Так же скрипт перехватывает
Jqueryajax запросы
Пример 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, и выполнять нужные действия при успешном ответе сервера. Это удобно для аналитики пользовательских действий, например, добавления товара в корзину.