Корзина 0 позиций
на сумму 0.00 ₽
Время работы:

BX.ajax.runComponentAction

BX.ajax.runComponentAction

Реализация Action на стороне класса компонента с CSRF-токенами, важная штука с неавторизованными юзерами

Доработки класса компонента:

use Bitrix\Main\Engine\Contract\Controllerable;
...
class ComponentNameComponent extends CBitrixComponent implements Controllerable
...
public function configureActions(): array
{
    return [
        //Название вашего Action
        'ajaxResendSms' => [
            //Отключение фильтра
            '-prefilters' => [
                ActionFilter\Authentication::class, // Для работы AJAX у неавторизованных пользователей
            ],
        ],
    ];
}

public function ajaxResendSmsAction(): array
{
    return []; // Можно использовать Exception в случае ошибки
}

В script.js примерно следующее:

BX.ajax.runComponentAction('vendor:example', 'greet', {
    mode: 'class', //это означает, что мы хотим вызывать действие из class.php
    data: {
        person: 'Hero!' //данные будут автоматически замаплены на параметры метода 
    },
    analyticsLabel: {
        viewMode: 'grid',
        filterState: 'closed'   
    }   
}).then(function (response) {
    console.log(response);
    /**
    {
        "status": "success", 
        "data": "Hi Hero!", 
        "errors": []
    }
    **/         
}, function (response) {
    //сюда будут приходить все ответы, у которых status !== 'success'
    console.log(response);
    /**
    {
        "status": "error", 
        "errors": [...]
    }
    **/             
});

Дополнительные материалы: Поможет ролик: https://www.youtube.com/watch?v=VS80_MvgyWk и статья https://verstaem.com/ajax/new-bitrix-ajax/

По JS

BX.ajax.runComponentAction('vendor:example', 'greet', {
    mode: 'class', //это означает, что мы хотим вызывать действие из class.php
    data: {
        person: 'Hero!' //данные будут автоматически замаплены на параметры метода 
    },

vendor:example - компонент, где расположен class.php greet - публичный метод, в классе он должен называться с суффиксом Action, то етсь greetAction

Корзина 0 позиций
на сумму 0.00 ₽