Режим AJAX для компонентов с проверкой id компонента

Рейтинг: 1.8443  
На голосовании
Предложил Пользователь 224396 17.08.2015 17:10:55

Режим AJAX для компонентов с проверкой id компонента

Если на странице 2 аяксовых компонента, то отрабатывает первый из них. (Проверялось на корзине и веб формах).
В компоненте корзины

if ($_REQUEST["AJAX_CALL"] == "Y" || $_REQUEST["is_ajax_post"] == "Y") {
 die();
}
Все что после - идёт лесом.
По идее данные должны соотносится с компонентом, которому они предназначаются.

З.Ы. Я не говрю уже о

preg_match_all('/action=(["\']{1})(.*?)\1/i', $arData[$key], $arAction);
$url = $arAction[2][0];

if ($url === '' || $this->__isAjaxURL($url))
{
 $arData[$key] = CAjax::GetForm($arData[$key+1], 'comp_'.$this->componentID, $this->componentID, true, $this->bShadow);
}
else
{
 $new_url = str_replace(CAjax::GetSessionParam($this->componentID), '', $url);
 $arData[$key] = str_replace($url, $new_url, $arData[$key]);
}

$bDataChanged = true; 
в CComponentAjax.
В общем возмущению нет предела.
Спрашивается, для чего нужны компоненты, если ничего толком не работает?
З.Ы.Ы Битрикс такой битрикс

Рейтинг: 0  
Пользователь 246496 17.08.2015 18:43:41
не понятно
почему бы не сделать запрос на отдельную страницу с компонентом?

как собирать данные из 2х компонентов?
Рейтинг: 0  
Пользователь 224396 17.08.2015 18:46:40
Вы имеете ввиду средствами битрикс? Или jquery?
Рейтинг: 0  
Пользователь 129131 18.08.2015 04:19:55
Как раз на прошлой неделе делал такую реализацию, две и более форм не работают с
BX.ajax.submitComponentForm()
BX.submit()

не учитывается в аяксе ID компонента, а очень нужно перезагружать в шаблоне компонента отдельную область, а не весь его шаблон, до саппорта это так и не дошло, все какие-то отмазки:
- это частная логика...  в нашей техподдержке нет на это времени...
Это же АПИ
- нет, это частная логика... разбирайтесь с ней сами...
Рейтинг: 0  
Пользователь 129131 18.08.2015 04:31:45
Если нужно просто заставить два компонента с аякс сделать рабочими на странице, то подойдет параметр компонента
"AJAX_MODE" => "Y",
"AJAX_OPTION_ADDITIONAL" => "FORM_ID_1", 

Но перезагрузить отдельную часть шаблона не получится с этой опцией, перезагружается весь шаблон компонента.
Рейтинг: -0.6291  
Пользователь 224396 18.08.2015 10:07:18
На счёт отдельной части компонента, в принципе они правы =) Но обеспечить работу стандартного функционала они обязаны (клиент платит за это деньги). А выходит, что даже заявленный функционал "работает" с ограничениями.
Рейтинг: -0.6291  
Пользователь 224396 18.08.2015 10:07:29
На счёт отдельной части компонента, в принципе они правы =) Но обеспечить работу стандартного функционала они обязаны (клиент платит за это деньги). А выходит, что даже заявленный функционал "работает" с ограничениями.