Бренды
Акции
Услуги
  • Разработка сайтов на 1С Битрикс
Компания
  • О компании
  • Сертификаты
  • Документы
  • Реквизиты
Блог
Контакты
Галерея
    +7 4912 99-38-48
    +7 4912 99-38-48
    Заказать звонок
    E-mail
    mail@rbs62.ru
    Адрес
    г. Рязань. Касимовское шоссе, д 57
    Режим работы
    Пн. – Пт.: с 9:00 до 18:00
    Заказать звонок
    РязБизнесСофт
    1С-Битрикс
    Лаборатория Касперского
    Мой Офис
    • 1С-Битрикс
      • 1С-Битрикс Управление сайтом
        • Лицензии
        • Переход на другую лицензию
        • Продление
    • Лаборатория Касперского
    • Мой Офис
    Каталог
    По всему сайту
    По каталогу
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    1С-Битрикс
    РязБизнесСофт
    Каталог
    По всему сайту
    По каталогу
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    РязБизнесСофт
    Телефоны
    +7 4912 99-38-48
    Заказать звонок
    0
    0
    0
    РязБизнесСофт
    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    • +7 4912 99-38-48
      • Назад
      • Телефоны
      • +7 4912 99-38-48
      • Заказать звонок
    • mail@rbs62.ru
    • г. Рязань. Касимовское шоссе, д 57
    • Пн. – Пт.: с 9:00 до 18:00
    Главная
    –
    Статьи
    –
    Разработка Битрикс
    –Работа с Ajax-запросами в компонентах и модулях 1С-Битрикс

    Работа с Ajax-запросами в компонентах и модулях 1С-Битрикс

    Начиная с версии 17.5.10 главного модуля 1С-Битрикс появились встроенные средства для обработки Ajax-запросов непосредственно в компонентах и модулях. Эти инструменты упрощают разработку, делая код более чистым и структурированным.

    Обработка Ajax-запросов в компонентах

    Способ 1: Класс компонента (class.php)

    Этот подход позволяет инкапсулировать всю логику компонента в одном классе, повторно использовать методы и параметры компонента.

    Шаги реализации:

    1. Реализуйте интерфейс Controllerable в классе компонента:

      class Feedback extends \CBitrixComponent implements \Bitrix\Main\Engine\Contract\Controllerable
      
    2. Определите метод configureActions() для настройки фильтров запросов:

      public function configureActions()
      {
       return [
           'sendMessage' => [
               'prefilters' => [], // Сбрасываем фильтры по умолчанию
           ],
       ];
      }
      
    3. Создайте методы-обработчики с постфиксом Action:

      public function sendMessageAction($post)
      {
       // Обработка данных
       return ['status' => 'success'];
      }
      
    4. Вызовите метод из JavaScript:

      BX.ajax.runComponentAction('prominado:feedback', 'sendMessage', {
       mode: 'class',
       data: {post: {name: 'Иван', message: 'Тестовое сообщение'}}
      })
      .then(function(response) {
       if (response.status === 'success') {
           // Обработка успешного выполнения
       }
      });
      

    Способ 2: Отдельный контроллер (ajax.php)

    Этот подход создает легковесный обработчик, явно разделяя логику компонента и Ajax-обработчика.

    Шаги реализации:

    1. Создайте файл ajax.php в папке компонента

    2. Создайте класс контроллера:

      class FeedbackAjaxController extends \Bitrix\Main\Engine\Controller
      {
       public function configureActions()
       {
           return [
               'sendMessage' => ['prefilters' => []],
           ];
       }
      
       public function sendMessageAction($post)
       {
           return "Данные получены";
       }
      }
      
    3. Вызовите метод из JavaScript (указав mode: 'ajax'):

      BX.ajax.runComponentAction('prominado:feedback', 'sendMessage', {
       mode: 'ajax',
       data: {post: {name: 'Иван'}}
      });
      

    Обработка Ajax-запросов в модулях

    Для работы с Ajax в модулях (доступно с версии 18.1.1 для модулей с точкой в названии):

    Настройка модуля

    1. Создайте файл .settings.php в корне модуля:

      return [
       'controllers' => [
           'value' => [
               'namespaces' => [
                   '\\Prominado\\Module\\Controller' => 'api',
               ],
           ],
           'readonly' => true,
       ],
      ];
      
    2. Создайте контроллер в папке /lib/controller/: ```php namespace Prominado\Module\Controller; use Bitrix\Main\Engine\Controller;

    class Updater extends Controller { public function applyAction() { $request = $this->getRequest(); return ['response' => 'success']; } }

    
    3. **Вызовите метод из JavaScript**:
    ```javascript
    BX.ajax.runAction('prominado:module.api.updater.apply')
        .then(function(response) {
            console.log(response);
        });
    

    Фильтры и безопасность

    Предустановленные фильтры

    Битрикс предоставляет набор фильтров для проверки запросов (расположены в /bitrix/modules/main/lib/engine/actionfilter/):

    • Authentication - проверка авторизации пользователя
    • HttpMethod - проверка HTTP-метода
    • Csrf - защита от CSRF-атак

    Настройка фильтров

    public function configureActions()
    {
        return [
            'sendMessage' => [
                'prefilters' => [
                    new \Bitrix\Main\Engine\ActionFilter\Authentication(),
                    new \Bitrix\Main\Engine\ActionFilter\HttpMethod([
                        \Bitrix\Main\Engine\ActionFilter\HttpMethod::METHOD_POST
                    ]),
                    new \Bitrix\Main\Engine\ActionFilter\Csrf(),
                ],
            ],
        ];
    }
    

    Особенности и рекомендации

    Важные моменты

    1. При работе с mode: 'class':

      • Выполняются методы onIncludeComponentLang() и onPrepareComponentParams()
      • Метод executeComponent() не выполняется
    2. Передача параметров:

      • Параметры из JavaScript передаются в аргументы метода с соответствующими именами
      • Порядок аргументов в PHP-методе не имеет значения
    3. CSRF-защита:

      • По умолчанию включена проверка CSRF-токена
      • Для отключения можно сбросить фильтры в configureActions()
      • В JavaScript токен доступен как BX.message('bitrix_sessid')

    Обработка ошибок

    Для обработки ошибок реализуйте интерфейс Errorable:

    class ExampleComponent extends \CBitrixComponent implements 
        \Bitrix\Main\Engine\Contract\Controllerable,
        \Bitrix\Main\Errorable
    {
        protected $errorCollection;
    
        public function onPrepareComponentParams($arParams)
        {
            $this->errorCollection = new \Bitrix\Main\ErrorCollection();
            return $arParams;
        }
    
        public function getErrors()
        {
            return $this->errorCollection->toArray();
        }
    }
    

    Заключение

    Новые средства работы с Ajax в 1С-Битрикс значительно упрощают разработку, позволяя создавать чистый и структурированный код. Выбор между реализацией в class.php или ajax.php зависит от конкретной задачи: первый подход лучше подходит для тесной интеграции с логикой компонента, второй — для создания легковесных независимых обработчиков.

    Назад к списку
    • Все публикации 14
      • Информационная безопасность 2
      • Новости 2
      • Полезные сервисы 2
      • Разработка Битрикс 8
    Подпишитесь на рассылку наших новостей и акций
    Подписаться
    Подписаться
    на новости и акции
    Интернет-магазин
    Каталог
    Акции
    Бренды
    Услуги
    Компания
    О компании
    Сертификаты
    Документы
    Реквизиты
    Информация
    Реквизиты
    Магазины
    Возможности
    Помощь
    Условия оплаты
    Условия доставки
    Гарантия на товар
    Вопрос-ответ
    Обзоры
    Контакты
    +7 4912 99-38-48
    +7 4912 99-38-48
    Заказать звонок
    E-mail
    mail@rbs62.ru
    Адрес
    г. Рязань. Касимовское шоссе, д 57
    Режим работы
    Пн. – Пт.: с 9:00 до 18:00
    mail@rbs62.ru
    г. Рязань. Касимовское шоссе, д 57
    © 2026 РязБизнесСофт
    Конфиденциальность
    Оферта
    Разработано в
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Галерея Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры