Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

При обновлении страницы товар опять кладется


Recommended Posts

Доброго времени суток, Господа!

 

Есть проблема: При обновлении страницы товар опять кладется.

Т.е, я кладу в корзину товар потом на той-же странице удаляю товар из мини-корзины, страница обновляется и товар опять кладется в корзину.

 

Какие могут быть соображения?

Link to post
Share on other sites

При обновлении страницы выскакивает окно "Подтвердите повторную отправку формы" ? Если да - то это нормально, что кладется еще раз.
Вкратце: когда браузер загружает страницу, он дает серверу команду: "ДАЙ мне страницу по адресу такому-то". Когда вы нажимаете на кнопку "положить в корзину", браузер дает серверу команду "ПОЛОЖИ выбранный товар в корзину". 

Когда вы нажимаете на кнопку "обновить", то браузер повторяет последнюю команду к данной странице, собственно посылая еще раз команду "ПОЛОЖИ...". Это нормально, так работает интернет. 

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

Edited by Gorman
Link to post
Share on other sites
12 часов назад, Gorman сказал:

При обновлении страницы выскакивает окно "Подтвердите повторную отправку формы" ? Если да - то это нормально, что кладется еще раз.
Вкратце: когда браузер загружает страницу, он дает серверу команду: "ДАЙ мне страницу по адресу такому-то". Когда вы нажимаете на кнопку "положить в корзину", браузер дает серверу команду "ПОЛОЖИ выбранный товар в корзину". 

Когда вы нажимаете на кнопку "обновить", то браузер повторяет последнюю команду к данной странице, собственно посылая еще раз команду "ПОЛОЖИ...". Это нормально, так работает интернет. 

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

Спасибо. Да, я это понимаю, что это так работает. Наверное неправильно суть описал. Больше беспокоит то, что страница обновляется когда удаляешь товар из мини-корзины. И соответственно опять кидается назад. Кажется это ненормально.

Вот код кнопки удаления:

<td class="remove"><a href="javascript:;" onclick="cart.remove('<?php echo $product['cart_id']; ?>');" title="<?php echo $button_remove; ?>"></a></td>
Link to post
Share on other sites

А, теперь стало яснее.

 

Во-первых, убрать href="javascript:;" вообще, во-вторых, править  вызываемый метод remove() объекта cart (привел ниже, из Вашего common.js), там он  Вас и редиректит.
 

'remove': function(key) {
        $.ajax({
            url: 'index.php?route=checkout/cart/remove',
            type: 'post',
            data: 'key=' + key,
            dataType: 'json',
            success: function(json) {
                if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
                    location = 'index.php?route=checkout/cart';
                } else {
                    $('#cart_block #cart_content').load('index.php?route=common/cart/info #cart_content_ajax');
                    $('#cart_block #total_price_ajax').load('index.php?route=common/cart/info #total_price');
                    $('#cart_block #cart_count_ajax').load('index.php?route=common/cart/info #cart_count');
                    $('#cart-total').html(json['total']);
                }
            }
        });
    }

 

Edited by Gorman
Link to post
Share on other sites
  • 2 weeks later...
В 17.02.2018 в 14:25, Gorman сказал:

А, теперь стало яснее.

 

Во-первых, убрать href="javascript:;" вообще, во-вторых, править  вызываемый метод remove() объекта cart (привел ниже, из Вашего common.js), там он  Вас и редиректит.
 


'remove': function(key) {
        $.ajax({
            url: 'index.php?route=checkout/cart/remove',
            type: 'post',
            data: 'key=' + key,
            dataType: 'json',
            success: function(json) {
                if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
                    location = 'index.php?route=checkout/cart';
                } else {
                    $('#cart_block #cart_content').load('index.php?route=common/cart/info #cart_content_ajax');
                    $('#cart_block #total_price_ajax').load('index.php?route=common/cart/info #total_price');
                    $('#cart_block #cart_count_ajax').load('index.php?route=common/cart/info #cart_count');
                    $('#cart-total').html(json['total']);
                }
            }
        });
    }

 

Спасибо, за ответ. Но разобраться никак не могу. Я не очень в ajax разбираюсь. Что править в этом скрипте, чтобы страница не обновлялась? Хотя бы направление дайте! ))

Link to post
Share on other sites

Честно: если не понимаете что в методе написано даже примерно, то разбираться с тем, почему так работает удаление товара из корзины будете неделю в лучшем случае.

Направление - копайте в сторону метода (функции), который я описал выше. Его можно найти в common.js. "Из коробки", редиректа в разделе выбора товаров быть не должно (собственно и в функции его нет), и если зайти на чистый магаз - то все будет добавляться и удаляться асинхронно, через ajax, без перезагрузки.
У вас на сайте сделано что-то такое, что и добавление, и удаление вместо вызова (или вместе с вызовом) js-метода еще и перезагружает страницу. С наскока, без исходных файлов я не могу Вам сказать, что именно заставляет его прыгать. Нужно залазить и смотреть как и куда проходит запрос, какие ответы приходят, и в какой момент его кидает.

 

Давайте еще проще опишу. 
1. У вас есть кнопка-крестик, <a href="javascript:;" onclick="cart.remove('<?php echo $product['cart_id']; ?>');"

2. Кнопка вызывает по щелчку (onclick) функцию cart.remove (на самом деле метод remove объекта cart), которую Вы можете найти в файле common.js. Лежит он где-нибудь в catalog/view/javascript/common.js

3. Функция отрабатывает все, что в ней написано. Она отправляет запрос на удаление в контроллер (checkout/cart/remove), и если оттуда приходит ответ, что все сделано, то:

4. Принимает решение что с этим ответом сделать. Функция смотрит на роут (на урл), и если мы находимся в корзине или на этапе оформления товара, то она перезагружает страницу (и показывает новую корзину). Если мы находимся где-то в другом месте, то она просто обновляет эту мини-корзину, без перезагрузки страницы.


Так должно работать из коробки. Что и где у вас намутили, что страницу по любому чиху перезагружается - нужно смотреть и отлавливать.

 

Edited by Gorman
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By LEDDISON
      Генератор коммерческих предложений для вашего магазина

      Хотите создать продающее коммерческое предложение или официальный фирменный бланк? Забудьте о Word или сложных дизайнерских программах! Оформите его с помощью нашего модуля. Воспользуйтесь простыми и современными дизайнерскими образцами или типовыми шаблонами коммерческих предложений, правильной формы и структуры: на оказание услуг, продажу товара и работы, или сделайте новый документ с чистого листа.

      Наш модуль облегчит работу Вам и Вашим работникам!
       
       
       
       
       
       


      Демо: https://shop-avd.ru/nasosy-vysokogo-davlenija/plunzhernye-nasosy/annovi-reverberi-rcs-13
       
      Для корзины:
       

       
       
       
       


      Генератор коммерческих предложений для сайта - удобный модуль который позволяет создавать КП как для одного товара так и для всей сформированной корзины в один клик и сохранить себе на компьютер или отправить на почту клиенту. 
       
      Также есть возможность сохранить заказы в PDF в админке, по выбранным заказам с учетом старой цены (цены заказа) либо по новой.

      Мульти-шаблонность
       

       
       

       
      Демо работы модуля для корзины
       
       

      корзина.mp4  
       
       
      Демо работы модуля для одного товара
       
       

      моно.mp4  
       

    • By LEDDISON
      750 10
      Скачать/Купить дополнение


      Генератор коммерческих предложений (PDF, EXCEL)
      Генератор коммерческих предложений для вашего магазина

      Хотите создать продающее коммерческое предложение или официальный фирменный бланк? Забудьте о Word или сложных дизайнерских программах! Оформите его с помощью нашего модуля. Воспользуйтесь простыми и современными дизайнерскими образцами или типовыми шаблонами коммерческих предложений, правильной формы и структуры: на оказание услуг, продажу товара и работы, или сделайте новый документ с чистого листа.

      Наш модуль облегчит работу Вам и Вашим работникам!

      Демо: https://shop-avd.ru/nasosy-vysokogo-davlenija/plunzhernye-nasosy/annovi-reverberi-rcs-13
       

       
       
      Для корзины:
       

       
       
       
       


      Генератор коммерческих предложений для сайта - удобный модуль который позволяет создавать КП как для одного товара так и для всей сформированной корзины в один клик и сохранить себе на компьютер или отправить на почту клиенту. 
       
      Также есть возможность сохранить заказы в PDF в админке, по выбранным заказам с учетом старой цены (цены заказа) либо по новой.

      Мульти-шаблонность
       

       
       

       
      Демо работы модуля для корзины
       
       

      корзина.mp4  
       
       
      Демо работы модуля для одного товара
       
       

      моно.mp4  
       
      Добавил LEDDISON Добавлено 10.07.2021 Категория Модули Системные требования от php 5.6 до 7+ Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1 ocStore 3.0
      2.3.0.2.4
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет  
    • By Seriusis
      750 10.5
      Скачать/Купить дополнение


      Cart Notify - уведомления в корзине и товаре в зависимости от условий
      Модуль позволяет создать неограниченное количество уведомлений с текстом, html + добавить баннер на странице корзины, оформления заказа в зависимости от товаров корзины, производителя, категории, покупателя, суммы корзины. Дополнительно модуль можно выводить в товаре.
      Совместим с simple
       
      ВОЗМОЖНОСТИ
      Вывод в позицию в зависимости от:
      производителя товара в корзине категории товара в корзине присутствие конкретного товара в корзине суммы в корзине (больше чем, меньше чем) группы зарегистрированного покупателя авторизирован или гость Вывод на странице товара работает по тем же привязкам, исключая сумму в корзине
       
       
      ДЕМО
      Добавьте товар в корзину для показа уведомлений
      https://oc23.likedev.pro/iphone 
      Админка https://oc23.likedev.pro/admin/   логин/пароль: demo/demo
       
      ОСОБЕННОСТИ
      нет ограничений для количества условий.  можно создавать разные условия для разных групп товаров комбинировать несколько условий мультиязычность поля: название, текст, баннер, ссылка для баннера, статус, размеры изображений, стиль  
      ВАРИАНТЫ ПРИМЕНЕНИЯ
      вывод важной информации для определенных групп товаров при покупке вывод информации о скидках, предложениях, подарках и т.д. вывод простых баннеров в корзине или товаре показ купонов, предложений для определенной суммы в корзине показ информации в зависимости от группы покупателя или статуса авторизации  
      ВАЖНО
       Условия работают по принципу "..и..и..", т.е учитываются все выбранные условия одновременно. Чем больше условий - тем меньше выборка.
       Если не выбрать ни одно условие - уведомление будет выводиться всегда.
       Если в корзине присутствует хотя бы один товар по заданным условиям, уведомление будет показано
       
      УСТАНОВКА
       
      видео установки (фикс для oc3 НЕ НУЖЕН)
       
      Через установщик в админке загружаете архив модуля ocmod для своей версии опенкарт. 
      Для версий 2.x убедитесь, что у вас уже установлен модификатор localcopy.ocmod, если его нет - установите.
       
      ЛИЦЕНЗИЯ 
      Лицензия выдается на один домен. Также при необходимости на тестовый поддомен.
      Теперь ключ будет выслан автоматически на почту покупателя сразу после вашего заказа. Если по какой-то причине письма нет - пишите на почту seriusisu@gmail.com или в лс.
       
      Приветствую дельные предложения по развитию и расширению модуля.
       
      ПРОСЬБА УКАЗЫВАТЬ ДОМЕН СРАЗУ ПРИ ПОКУПКЕ
       
      Также смотрите модули:
      YouTube lazy load & popup - оптимизация и кастомизация iframe
      Accordion & Tabs & Steps, Faq & HowTo Microdata, any place & content
       

       
       

      Добавил Seriusis Добавлено 01.01.2021 Категория Модули Системные требования Метод активации По запросу в ЛС
      По запросу на почту Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3.0.2.4
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет  
    • By Seriusis
      Модуль позволяет создать неограниченное количество уведомлений с текстом, html + добавить баннер на странице корзины, оформления заказа в зависимости от товаров корзины, производителя, категории, покупателя, суммы корзины. Дополнительно модуль можно выводить в товаре.
      Совместим с simple
       
      ВОЗМОЖНОСТИ
      Вывод в позицию в зависимости от:
      производителя товара в корзине категории товара в корзине присутствие конкретного товара в корзине суммы в корзине (больше чем, меньше чем) группы зарегистрированного покупателя авторизирован или гость Вывод на странице товара работает по тем же привязкам, исключая сумму в корзине
       
       
      ДЕМО
      Добавьте товар в корзину для показа уведомлений
      https://oc23.likedev.pro/iphone 
      Админка https://oc23.likedev.pro/admin/   логин/пароль: demo/demo
       
      ОСОБЕННОСТИ
      нет ограничений для количества условий.  можно создавать разные условия для разных групп товаров комбинировать несколько условий мультиязычность поля: название, текст, баннер, ссылка для баннера, статус, размеры изображений, стиль  
      ВАРИАНТЫ ПРИМЕНЕНИЯ
      вывод важной информации для определенных групп товаров при покупке вывод информации о скидках, предложениях, подарках и т.д. вывод простых баннеров в корзине или товаре показ купонов, предложений для определенной суммы в корзине показ информации в зависимости от группы покупателя или статуса авторизации  
      ВАЖНО
       Условия работают по принципу "..и..и..", т.е учитываются все выбранные условия одновременно. Чем больше условий - тем меньше выборка.
       Если не выбрать ни одно условие - уведомление будет выводиться всегда.
       Если в корзине присутствует хотя бы один товар по заданным условиям, уведомление будет показано
       
      УСТАНОВКА
       
      видео установки (фикс для oc3 НЕ НУЖЕН)
       
      Через установщик в админке загружаете архив модуля ocmod для своей версии опенкарт. 
      Для версий 2.x убедитесь, что у вас уже установлен модификатор localcopy.ocmod, если его нет - установите.
       
      ЛИЦЕНЗИЯ 
      Лицензия выдается на один домен. Также при необходимости на тестовый поддомен.
      Теперь ключ будет выслан автоматически на почту покупателя сразу после вашего заказа. Если по какой-то причине письма нет - пишите на почту seriusisu@gmail.com или в лс.
       
      Приветствую дельные предложения по развитию и расширению модуля.
       
      ПРОСЬБА УКАЗЫВАТЬ ДОМЕН СРАЗУ ПРИ ПОКУПКЕ
       
      Также смотрите модули:
      Accordion & Tabs & Steps, Faq & HowTo Microdata, any place & content
      YouTube lazy load & popup - оптимизация и кастомизация iframe
      Smart Video Widgets - видео в фоне, баннера, изображения, уведомления с настройкой условий показа
      Google Reviews - отзывы с гугл карт (Google Business) с виджетом доверия + отзывы о товарах
       
       

       
       

    • By Serg9988
      Уведомление о наличии товара PRO
      Зачем нужен модуль?
      Данны модуль позволяет увеличить количество продаж, за счет уведомления клиента о том, что интересующий его товар появился в продаже.    Соответственно вы не теряете потенциального клиента на товар которого в определенный момент не было в наличии.
       
      Модуль позволяет отслеживать желания ваших покупателей и заказывать у поставщика именно те товары, которых нет в наличии у вас на складе, но  которыми интересуются ваши покупатели.  
      Модуль собираем эмейлы потенциальных покупателей которые можно использовать в последующих разсылках акций и распродаж.  
       
      Краткое описание:
      Модуль позволяет покупателю заказать уведомление о поступлении товара в магазин.
      Модуль заменяет кнопку "Купить" на кнопку "Уведомить", если товара нет на складе или выбранной покупателем опции у товара нет в наличии.
      Работает по:
      количеству товара на складе по количеству опций на товаре по статусу товара  

      Возможности:
       
       История запросов уведомлений от пользователей в панели администратора   Возможность ручного отключения уведомлений   Обработка всего уведомления одним нажатием   Автоматическая отправка уведомлений о поступлении товара (CRON)    Уведомляет покупателя после изменения количества товара в ручную Работает по количеству опций на товаров (необязательно включается в настройке модуля) добавлена возможность покупателю указать желаемое количество товара при котором его уведомлять о поступлении при вводе желаемого количества товара для покупки, модуль на лету проверяет достаточно ли товара на складе  История заявок в личном кабинете покупателя  Пользователь может видеть историю своих уведомлений   Добавление любых произвольных полей в окно заказа уведомления (телефон, адрес, и тд)  Конструктор писем с возможностью подстановки данных оставленных покупателем  (в том числе доп. поля) Уведомление о новых заявках в административном меню  Сортировка и фильтрация списка заявок по цене, модеи, названию, артикулу, количеству товара Управление цветом кнопок модуля с админки  
       
       
      К модулю идет инструкция где подробно описано как установить и настроить модуль. 
      Адаптация, правки вида модуля и другие работы на не стандартном шаблоне делаются за отдельную плату.
       
      Модуль работает на шаблонах:
        Moneymaker2
       Journal
       Unishop
       
      Модуль совместим с модулями:
      uni_tabs
      owlcarousel
       
      ознакомится с документацией - ДОКУМЕНТАЦИЯ
       
      Системные/технические требования:
      Протестировано на следующих версиях : 
      ocstore 2.0*,2.1*,2.2*.2.3*, 3.0* opencart 2.0*,2.1*,2.2*.2.3*, 3.0*  
      Модуль не тестировался и его работа не гарантируется на всякого рода зборках ocstore или opencart от студий или отдельных разработчиков. Работа гарантируется только на чистых официальных сборках!
       
      Для работы модуля требуется:
      PHP Version: 5.6.x или выше
       
       
      Возможности:
       
      В планах реализовать:
      возможность создания собственных полей на форму с возможностью использовать их в письмах - Реализовано с версии 9.6 отправка уведомлений по смс построение отчетов по заявкам и выгрузка их в Exsel  
       
      Дизайн модуля адаптивен и корректно работает на мобильных устройствах!
       
      Установка:
       Скачайте архив с нужной версией модуля. Модуль с версии 9.5 работает только на opencart 2.3 и выше и OCStore 2.3 и выше.  Зайдите в административную панель сайта в раздел "Дополнения/Установка дополнений" и установите модуль  Зайдите в раздел "Дополнения/Менеджер дополнений" и обновите кеш  Зайдите в раздел "Дополнения/Дополнения/Модули" Установите модуль "SM Уведомить о наличии PRO"  Зайдите в редактирование модуля (введите ключ активации или сделайте запрос на получение ключа ) активируйте модуль переведя опцию "Статус" в позицию "Включен.              Сохраните настройки  Подключите модуль на страницы Главная, категории, товары и тд. (Раздел Дизайн/Схемы)  
      Состав модуля:
      полная инструкция с описанием работы и установки модуля; файлы модуля; файл для тестирования настроек сервера;  
      ДЕМО 
       
      Демо
      Админка
      login/pass - demo/demo
       
      Полное описание:
       
      Все работы по стилизации модуля под ваш шаблон (цвет кнопки, форма размер и тд.) проводяться исключительно на платной основе.
       
      Что нового:
       
      Обновление:
       
      Условия использования:
      Лицензия на модуль выдается на следующих условиях:
      1 лицензия = 1 покупка = 1 доменное имя.
      То есть - один раз купив, вы получаете ключ для работы модуля только на одном доменном имени, одном магазине!
       
      Приобретая лицензию (покупая дополнение), Вы автоматически соглашаетесь со следующими положениями:
       
      Для получения лицензионного ключа напишите мне в личном сообщении от имени того, на кого покупался модуль:
      Название модуля Доменное имя вашего магазина Доменное имя тестовой площадки (если таковая имеется) Ваш адрес электронной почты, куда выслать ключ  
      Дополнительные лицензии вы можете получить купив модуль на сайте http://myopencart.club/
      На 4-ю и более покупку действует скидка. Чтобы получить скидку пишите в личку или на почту.
      Вопросы, пожелания можно писать в форум или на почту support@myopencart.club
       



  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.