Очистка корзины через AJAX
Нужно реализовать очистку корзины при некоторых действиях на странице.
При чем сделать надо через js.
Но не могу найти как и куда послать AJAX.
Куда копать?
При чем сделать надо через js.
Но не могу найти как и куда послать AJAX.
Куда копать?
Комментарии: 9
Я когда-то делал кнопку «Купить в один клик» и пошёл на такую хитрость, чтобы очистить корзину. Добавил скрытую форму с кнопкой очистить корзину, а в файле 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, переписав её так, чтобы не происходила перезагрузка страницы после очистки корзины.
Ни где нет рабочего варианта по отключению перезагрузки страницы после очистки корзины. Выложите ваш мануал! будем признательны…
Вот такой кусок кода нашёл. Надеюсь поможет.
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.
Я так понимаю… необходимо создать новый класс для МиниШоп?
Для обновления корзины — нет. Используется стандартный класс
Самый простой способ — отправить ajax запрос с параметром:
/?ms2_action=cart/clean
Шикарно, очень помогли, спасибо)
Мне поставили такую же задачу, типа чтобы в миникорзине была кнопка удалить все заказы. Решил повесив на ссылку функцию:
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 есть и покороче функция — лень копать было…
Тоже долго искал. Работает на ура! Василий ответил:
https://modx.pro/help/7664#comment-53654
https://modx.pro/help/7664#comment-53654
Бронебойный вариант:
$.post(document.location, {ms2_action: 'cart/clean'});
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.