Jump to content

Recommended Posts

Здравствуйте. При изменении количества товара в корзине нужно нажать на кнопку обновить и страница перезагружается. Подскажите пожалуйста приблизительный алгоритм как можно реализовать этот функционал БЕЗ перезагрузки страницы. чтобы можно было ввести новое количество, нажать кнопку и обновилась итоговая цена заказа. заранее спасибо за ответы

Share this post


Link to post
Share on other sites

Такое всегда делается ajax запросами. Добавьте свой экшн в какой нибудь контроллер (в принципе на самом деле даже не важно в какой но лучше в контроллер корзины наверное) куда будете сбрасывать идентификатор товара в корзине и количество, а возвращать будете либо новые данные корзины (общая стоимость и количество) либо весь HTML код корзины, а дальше JS кодом меняете соответствующий фрагмент HTML кода страницы на новый.

  • +1 1

Share this post


Link to post
Share on other sites

прошу прощения. но что за экшн? и и в какое место catalog/controller/checkout/cart.php его необходимо добавить?

Share this post


Link to post
Share on other sites

Ваша задача, которая достаточно просто выглядит на первый взгляд, решается не очень не просто.

Попытаюсь несколько прояснить то, что вам посоветовали выше.

1) используя javascript вам нужно на клик по кнопке обновления повесить обработчик, который будет посылать ajax запрос на обновление содержимого корзины и возвращать результат

2) полученный результат с корзиной (JSON или HTML) нужно отобразить на странице, вместо существующего

 

 

php обработчик можете добавить в файл catalog/controller/checkout/cart.php в виде нового метода, назвав его, например, cart_update(). По сути он должен выполнять то же,что и имеющийся метод index(), а именно обновлять число товаров в корзине и вычислять total по всем правилам. Отличие в том, что он должен уметь работать с ajax.

Share this post


Link to post
Share on other sites

спасибо за ответ хоть что то немного понятно. но у меня вопрос. а как сделать так, чтобы данные посылаемые через аякс обрабатывал именно метод cart_update?

 

В cart.tpl я пока что добавил вот такой вот тестовый скрипт (здесь для инпута количества и кнопки обновления я добавил классы для удобства)

 

<script type="text/javascript">

  $(document).ready(function() {
    $(".update-btn").bind("click", function() {
      $.ajax({
          url: 'index.php?route=checkout/cart&quantity=' + $('input.quantity-field').val(), 
          type: 'post',
          data: 'quantity=' + $('input.quantity-field').val(), 
          dataType: "json",
          beforeSend: alert('Ожидание данных...'),
          success: alert('DONE')
      });
    });
  });
</script>
 
Но что то не работает.  я с аяксом знаком только со вчерашнего вечера, так что пожалуйста не судите строго

Share this post


Link to post
Share on other sites

Вам же написали, что метод  index() не умеет работать с ajax. Надо писать свой метод, который будет обрабатывать именно аякс запросы.

В url надо просто "index.php", а в data строку запроса - data: "route=checkout/cart&quantity=" + $('input.quantity-field').val() (лучше в двойные кавычки брать)

Посмотрите в браузере, какой уходит запрос и какой приходит ответ.

Вставьте обработчик error или complete, чтобы хоть знать что запрос завершился

 

И отключите кеш, cache: false (по умолчанию включен)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By BeTep2
      Всем привет. Хочу реализовать плавное открытие\закрытие корзины на главной. В javascript полный ноль.
      Стоит дефолтная корзина.
      Вот код comon.js:
       
      $('#cart > .heading a').live('mouseenter', function() { $('#cart').addClass('active'); $('#cart').load('index.php?route=module/cart #cart > *'); $('#cart').live('mouseleave', function() { $(this).removeClass('active'); }); }); Пробовал добавлять задержку к addClass и removeClass но выглядит это ужасно.
      По скольку, само появление реализовывается чем что без класса active блок content - display: none;, пробовал реализовать через команду FadeIn и FadeOut. Получилось вот так:
       
      $('#cart').live('mouseenter', function() { $('active').fadeIn(slow); $('#cart').load('index.php?route=module/cart #cart > *'); $('#cart').live('mouseleave', function() { $('active').fadeOut(slow); }); }); В чем ошибка с этой командой? И как вы у себя реализовывали это?
       
      ЗЫ. смотрел эту тему, но решение там - с ошибкой.
  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.