Всем добрый рабочий день!
Возникла проблема в силу малого опыта с вебом в принципе. Подскажите, пожалуйста, как правильно формируются гет-параметры при открытии модальных окон через ajax-запросы.
Задача была создать функционал для предпросмотра информации о товарах в разделах каталога. В шаблоне вывода списка товаров добавил <span> с ссылкой на шаблон модального окна.
Код |
---|
<span class="quickview" data-fancybox='' data-type='ajax' data-src="/bitrix/templates/aspro-allcorp2/components/bitrix/news.detail/catalog_modal/template.php?ID=<?=$arItem["ID"]?>" data-product-id="<?=$arItem["ID"]?>"></span> |
Далее создал скрипт-перехватчик для вызова модального окна через fancybox
Код |
---|
document.addEventListener('DOMContentLoaded', function () { document.querySelectorAll('.quickview').forEach(function (element) {
element.addEventListener('click', function (event) {
event.preventDefault();
var productId = this.getAttribute('data-product-id');
if (!productId) return;
console.log('Current Product ID:', productId);
$.fancybox.open({
src: '/bitrix/templates/aspro-allcorp2/components/bitrix/news.detail/catalog_modal/template.php?ID=' + productId,
type: 'ajax',
ajax: {
settings: {
method: 'GET',
data: { ID: productId },
cache: false
}
},
dataType: 'html',
});
console.log('PRODUCT_ID:', productId);
});
});
}); |
Ну и, собственно, сам шаблон окна
Код |
---|
<?if(!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();?><?$this->setFrameMode(true);?>
<?
global $arTheme;
use \Bitrix\Main\Localization\Loc;?>
<? echo "<pre>"; print_r($_GET['ID']); echo "</pre>";?>
<?
if (isset($_GET['ID']) && !empty($_GET['ID'])) {
$productId = intval($_GET['ID']);
$arResult = CIBlockElement::GetList(array(), array('ID' => $productId))->Fetch();
if (!empty($arResult)) {
?>
<div class="modal-content" style="padding: 20px; max-width: 80%; margin: auto;">
<h2><?=htmlspecialcharsbx($arResult['NAME']); ?></h2>
<? if ($arResult['PREVIEW_PICTURE']): ?>
<img src="<?=$arResult['PREVIEW_PICTURE']['SRC']; ?>" alt="<?=$arResult['NAME']; ?>" class="img-thumbnail" style="max-width: 100%;" />
<? endif; ?>
<? if ($arResult['DETAIL_TEXT']): ?>
<div class="detail-text">
<?=htmlspecialcharsbx($arResult['DETAIL_TEXT']); ?>
</div>
<? endif; ?>
<? if ($arParams['ORDER_VIEW'] === 'Y'): ?>
<div class="price-block">
<?=\Aspro\Functions\CAsproAllcorp2::showPrice($arResult, $arParams, true, true); ?>
</div>
<button class="btn btn-primary add-to-cart" oncl ick="addToCart(<?=$arResult['ID']; ?>)"><?=Loc::getMessage('ADD_TO_CART'); ?></button>
<? endif; ?>
</div>
<?php
} else {
echo 'Продукт не найден.';
}
} else {
echo 'Недостаточно данных для отображения товара.';
}
?> |
Но при клике открывается модальное окно с сообщением "The requested content cannot be loaded. Please try again later."
Я так понимаю, проблема именно в адресе запроса, но не могу его корректно настроить.
При выводе гет-параметра через var_dump($_GET['ID']), понятное дело, отображается NULL.