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.
добавляем адрес отправки параметр (в обоих компонентах но естественно с разным значением параметра):
<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.
Комментарии
Отправить комментарий