ragnar_ok
@ragnar_ok

Почему не работает Bitrix AJAX?

$APPLICATION->ShowHead();
CJSCore::Init();
$APPLICATION->IncludeComponent(
  "bitrix:news",
  "",
  [
    "AJAX_MODE" => "Y",
    "AJAX_OPTION_ADDITIONAL" => "",
    "AJAX_OPTION_HISTORY" => "Y",
    "AJAX_OPTION_JUMP" => "N",
    "AJAX_OPTION_STYLE" => "N",
    // ... и другие параметры вызова компонента
  ],
  false
);

Не работает AJAX расширение JS-библиотеки Bitrix (отсутствует $arParams["AJAX_ID"]). На сайте реализована многосайтовость. Русскоязычный сайт находится в корне, тогда как англоязычный в /en.

Интересно то, что проблема проявляет себя только на хостинге. Еще интереснее, что AJAX НЕ работает только в том случае, если php-файл с вызовом комплексного компонента bitrix:news и включенным AJAX_MODE находится НЕ в папке русскоязычного сайта (/), а в папке англоязычного сайта (/en). Я пробовал переместить этот php-файл с вызовом комплексного компонента bitrix:news и включенным AJAX_MODE на уровень выше в папку русскоязычного сайта (/), не изменяя его. AJAX работает.

Я сделал резервную копию и развернул ее на BitrixVM. В этом случае проблему повторить не могу - AJAX работает, а все ссылки, встреченные внутри компонента, преобразуются в AJAX-вызовы. На BitrixVM я могу повторить проблему только с включенным SEF_MODE.

Я обошел проблему тем, что настроил роутинг (в urlrewrite.php):
$arUrlRewrite = [
 [
   'CONDITION' => '#^/en/folder/#',
   'PATH' => '/folder_en/index.php',
 ],
];

Как видите, физически теперь php-файл с вызовом комплексного компонента bitrix:news и включенным AJAX_MODE (/folder_en/index.php) лежит не в /en , а в корне (/). Таким образом все работает!

Но проблема не решена. Может быть есть хотя бы предположения в какую сторону копать?
  • Вопрос задан
  • 1587 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы