Bitrix AJAX_MODE возвращает всю страницу

Бывает что если на странице два одинаковых компонента и оба должны работать в режиме AJAX то один из них работает нормально, а вместо второго возвращается вся страница. (Например две формы) Для решения данной проблемы предлагают использовать AJAX_OPTION_ADDITIONAL однако в моем случае это не сработало. Для тех у кого способ выше не сработал предлагаю использовать следующий:
добавляем адрес отправки параметр (в обоих компонентах но естественно с разным значением параметра):
<form action="<?=$APPLICATION->GetCurPageParam("type=content", array("type"));?>" ...
А далее при подключении компонента не даем обрабатываться ему если данные пришли не для него:
$request = [];
if ($_REQUEST["type"] != "content") {
    $request = $_REQUEST;
    $_REQUEST = [];
}
$APPLICATION->IncludeComponent(
    "bitrix:iblock.element.add.form",
    "write_on_air",
    array(
        ...

        "AJAX_MODE" => "Y",
        "AJAX_OPTION_SHADOW" => "N",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_STYLE" => "Y",
        "AJAX_OPTION_HISTORY" => "N",
    )
);
if (count($request)) {
    $_REQUEST = $request;
}


соответственно в подключении второго компонента используем другое значение параметра: type.

Комментарии

Популярные сообщения из этого блога

Bitrix: кнопка добавить в корзину

Битрикс: какого х*я ты ищешь в неактивных разделах

Битрикс: highloadblock значения в свойстве список