Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Функция addtocart в ссылке Добавить в корзину

00 голосов
3
Здравствуйте. Пытаюсь сделать следующее. При клике на ссылке "Добавить заказ" (та, что содержит return addtocart(..)) мне нужно, чтобы вначале выводилось диалоговое окно о том, что заказ добавлен и после этого уже чтобы шла перезагрузка страницы.

Внимание! alert() - не подойдет, поскольку дизайн его изменить нельзя. В jQuery я то сделал окно, выскакивающее при событии click на ссылке, но пользователь просто не успевает прочитать, что ему там выводится, потому что сразу идет перезагрузка страницы. return false - помогает, но теряются параметры.

Кто-нибудь решал такую проблему? Помогите, пожалуйста. И еще, где находится файл со скриптом функции addtocart?
спросил 20 Сен, 13 от JIauJIa (280 баллов)

3 Ответы

00 голосов
Да, я решила эту проблему буквально 2 дня назад.
Все оказалось достаточно просто, но пришлось поломать голову.
Я сделала так, что при нажатии на "В корзину" показывается псевдо-окошко (псевдо - потому что это див просто становится видимым), с информацией, что товар добавлен в корзину на сумму столько-то рублей.

Я использовала свой ajax небольшой скриптик, т.е., у меня "В корзину" это никакая не ссылка, а span, который по onClick вызывает событие makeRequest... код:
Код
<span
style="cursor: pointer; font-weight: bold; text-decoration: underline"
onclick="makeRequest('/my-busket.php?action=ADD2BASKET&id=<?=$arElement["ID"]?>&quantity=1&price=<?=$price?>')">
<img src="<?=SITE_TEMPLATE_PATH?>/images/bask-put.gif" alt=""/> В корзину
</span>


Соответственно, в файле my-busket.php обрабатываем полученные GET'ом значения id, quantity, action , price. С полученным ID и action смело пишем добавление в корзину (есть в документации для разработчиков кусок кода, который очень прекрасно работает), и echo цены. И еще пару плюшек типа ссылок "перейти к оформлению" и "продолжить".


А в шаблоне компонента (в примере span из "элементов раздела")у меня есть
Код
<div id="txtCustomerInfo"></div>
, который собственно, получает и выводит результаты работы скрипта.
и также в шаблоне компонента подключаю вверху
Код
<script type="text/javascript" src="<?=SITE_TEMPLATE_PATH?>/js/my-ajax.js"></script>


Все вместе это происходит без обновления страницы.
my-ajax.js - это скрипт, который чуть-чуть отличается от того, что здесь, только тем, что мой не алертует результат, а выводит в диве.

И конечно же, для <div id="txtCustomerInfo"></div> я написала соответствующие стили, типа абсолютного позиционирования четко по центру экрана и т.д.
ответил 26 Сен, 13 от Texnik (1,860 баллов)
00 голосов
Спасибо большое, Julliet. Я все же решил проблему сам, но принцип ее решения такой же как и у Вас. Правда использовал для этого jQuery.

Отлавливаю событие click на ссылке, получаю параметры через this.href, эти параметры ajaxом передаю php коду, в котором с помощью небезызвестной функции Add2BasketByProductID() добавляю заказ в корзину, после чего вывожу тем же jQuery div с сообщением, что товар добавлен. Все, страница не перезагружается алертовский div работает.

Спасибо. :)
ответил 26 Дек, 13 от JIauJIa (280 баллов)
00 голосов
Цитата
Вячеслав Сухов пишет:
Правда использовал для этого jQuery.


Главное - получить результат, фантиков накрутить можно каких угодно)
хорошо что у вас получилось)
ответил 12 Апр, 14 от Texnik (1,860 баллов)

Похожие вопросы

0 голосов
1 ответ
+1 голос
1 ответ
спросил 28 Июль, 15 от аноним
0 голосов
3 ответов
спросил 15 Фев, 14 от asagava (680 баллов)
0 голосов
6 ответов