Очистка корзины через AJAX

Нужно реализовать очистку корзины при некоторых действиях на странице.
При чем сделать надо через js.
Но не могу найти как и куда послать AJAX.
Куда копать?
Константин
11 мая 2015, 08:08
modx.pro
1
4 950
0

Комментарии: 9

Сергей Фещуков
11 мая 2015, 15:51
+1
Я когда-то делал кнопку «Купить в один клик» и пошёл на такую хитрость, чтобы очистить корзину. Добавил скрытую форму с кнопкой очистить корзину, а в файле JS прописал:
$('form button[value="cart/buy"]').unbind('click').bind('click', function() {
	$('form button[value="cart/clean"]').click();
	return false;
});
miniShop2.Callbacks.Cart.clean.response.success = function () {
	$('form button[value="cart/add"]').click();
	location.href = "order.html";
	return false;
}
Только потом пришлось переопределить функцию miniShop2.Cart.status, переписав её так, чтобы не происходила перезагрузка страницы после очистки корзины.
    РОМАН
    05 сентября 2019, 14:14
    0
    Ни где нет рабочего варианта по отключению перезагрузки страницы после очистки корзины. Выложите ваш мануал! будем признательны…
      Сергей Фещуков
      05 сентября 2019, 15:05
      0
      Вот такой кусок кода нашёл. Надеюсь поможет.
      miniShop2.Cart.status =  function (status) {
                  if (status['total_count'] < 1) {
                      CloseWindow();
                      $('#msCartSide').remove();
                  } else {
                      var $cart = $(miniShop2.Cart.cart);
                      var $miniCart = $(miniShop2.Cart.miniCart);
                      if (status['total_count'] > 0 && !$miniCart.hasClass(miniShop2.Cart.miniCartNotEmptyClass)) {
                          $miniCart.addClass(miniShop2.Cart.miniCartNotEmptyClass);
                      }
                      $(miniShop2.Cart.totalWeight).text(miniShop2.Utils.formatWeight(status['total_weight']));
                      $(miniShop2.Cart.totalCount).text(status['total_count']);
                      $(miniShop2.Cart.totalCost).text(miniShop2.Utils.formatPrice(status['total_cost']));
                      if ($(miniShop2.Order.orderCost, miniShop2.Order.order).length) {
                          miniShop2.Order.getcost();
                      }
                      $.ajax({
                              url: 'cart.html',
                              data: {ajax: true, miniCart: true},
                              success: function(redata) {
                                  $('#msCartSide').remove();
                                  $('.content').append(redata);
                                  ajaxLinks();
                              }
                          });
                  }
              }
      На странице cart.html размещен только сниппет msCart.
        РОМАН
        05 сентября 2019, 17:13
        0
        Я так понимаю… необходимо создать новый класс для МиниШоп?
          Сергей Фещуков
          06 сентября 2019, 07:50
          0
          Для обновления корзины — нет. Используется стандартный класс
    Воеводский Михаил
    11 мая 2015, 16:46
    2
    +2
    Самый простой способ — отправить ajax запрос с параметром:
    /?ms2_action=cart/clean
      Константин
      11 мая 2015, 20:35
      0
      Шикарно, очень помогли, спасибо)
      Александр
      20 марта 2017, 06:36
      0
      Мне поставили такую же задачу, типа чтобы в миникорзине была кнопка удалить все заказы. Решил повесив на ссылку функцию:

      function cartClean(){
      	$.get(
      	    "/",
      		{ ms2_action: "cart/clean" },
      		function(data){
      			var jo = $.parseJSON(data);
      			if(jo.success){
      				var opt = {
      				    theme: 'ms2-message-success',
      				    sticky: false
      			        };
      				$.jGrowl(jo.message, opt);
      				$("#msMiniCart").removeClass('full');   //перерисовать миникорзину
      			}
      		}
      	);
      }
      но наверно в js minishop есть и покороче функция — лень копать было…
        Евгений
        16 октября 2020, 11:08
        0
        Тоже долго искал. Работает на ура! Василий ответил:
        https://modx.pro/help/7664#comment-53654
        Бронебойный вариант:
        $.post(document.location, {ms2_action: 'cart/clean'});
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          9