Обновление корзины при отправке письма

130
14 июня 2019, 03:30
    var cart = {};
function loadCart() {
    //проверяю есть ли в localStorage запись car
    if (localStorage.getItem('cart')) {
        //если есть - расшифровываю и записываю в переменную cart
        cart = JSON.parse(localStorage.getItem('cart'));
            showCart();
            showMiniCart();
    }
    else {
        $('.cart_nulled').html('<div>Корзина пуста. Добавьте товар в корзину - <a href="catalog.html">Перейти в каталог</a></div>');
        $('.table-cart').html('<style="display: none;">');
    }
}

function showCart() {
    //вывод корзины
    if (!isEmpty(cart)) {
            $('.cart_nulled').html('<div>Корзина пуста. Добавьте товар в корзину - <a href="catalog.html">Перейти в каталог</a></div>');
            $('.table-cart').html('<style="display: none;">');
            $('.total').html(0);
        }
    else {
        $.getJSON('goods.json', function (data) {
            var goods = data;
            var out = '';
            var total = 0;
            for (var id in cart) {
                out+= '<tr>';
                out+= '<td>';
                out+= '<p class="tovar_name">'+goods[id].name+'</p>';
                out+= '<p class="tovar_manufacturer">'+goods[id].manufacturer+'</p>';
                out+= '<p class="tovar_country">'+goods[id].country+'</p>';
                out+= '</td>';
                out+= '<td>';
                out+= '<button class="minus-goods" data-id="'+id+'">-</button>';
                out+= cart[id];
                out+= '<button class="plus-goods" data-id="'+id+'">+</button>';
                out+= '</td>';
                out+= '<td class="tovar_cost">от '+goods[id].cost+' ₽</td>';
                out+= '<td class="tovar_cost">от '+cart[id]*goods[id].cost+' ₽</td>';
                total+= goods[id].cost*cart[id];
                out+= '<td><button class="del-goods" data-id="'+id+'">x</button></td>';
                out+= '</tr>';
            }
            $('.cart').html(out);
            $('.del-goods').on('click', delGoods);
            $('.minus-goods').on('click', minusGoods);
            $('.plus-goods').on('click', plusGoods);
            $('.total').html(''+total+'');
        });
    }
}
function delGoods() {
    //удаляем товар из корзины
    var id = $(this).attr('data-id');
    delete cart[id];
    saveCart();
    showCart();
    showMiniCart();
}
function minusGoods() {
    //уменьшаем товар из корзины
    var id = $(this).attr('data-id');
    if (cart[id]==1) {
        delete cart[id];
    }
    else {
        cart[id]--;
    }
    saveCart();
    showCart();
    showMiniCart();
}
function plusGoods() {
    //добавляем товар из корзины
    var id = $(this).attr('data-id');
    cart[id]++;
    saveCart();
    showCart();
    showMiniCart();
}
function saveCart() {
    //сохраняю корзину в localStorage
    localStorage.setItem('cart', JSON.stringify(cart));
}
function isEmpty(object) {
    //проверка корзины на пустоту
    for (var key in object) {
        if (object.hasOwnProperty(key)) return true;
        return false;
    }
}
function showMiniCart(){
    //показываю содержимое корзины
    var out = Object.keys(cart).length;
    $('.mini-cart').html(out);
}
function sendEmail() {
    var ename = $('#ename').val();
    var ephone = $('#ephone').val();
    var email = $('#email').val();
    var emessage = $('#emessage').val();
    var number_apteka= $('#number_apteka').val();
    if (ename!='' && email!='' & ephone!='') {
        if (isEmpty(cart)) {
            $.post(
                "core/mail.php",
                {
                    "ename" : ename,
                    "ephone" : ephone,
                    "email" : email,
                    "emessage" : emessage,
                    "number_apteka" : number_apteka,
                    "cart" : cart
                },
                function(data) {
                    if (data==1) {
                        alert('Ваш заказ принят!');
                    }
                    else {
                        alert('Повторите заказ');
                    }
                }
            );
        }
        else {
            alert('Корзина пуста');
        }
    }
    else {
        alert('Заполните поля');
    }
}
$(document).ready(function () {
    loadCart();
    $('.send-email').on('click', sendEmail); // отправить письмо с заказом
})

Подскажите пожалуйста, как после отправки письма, сделать сброс корзины и мини-корзины, а также очистить поля формы. Пробовал очищать localStorage после отправки, но в мини-корзине товары остаются.

Answer 1
function sendEmail() {
    ...
        $.post(
            "core/mail.php",
            {
                "ename" : ename,
                "ephone" : ephone,
                "email" : email,
                "emessage" : emessage,
                "number_apteka" : number_apteka,
                "cart" : cart
            },
            function(data) {
                if (data==1) {
                    alert('Ваш заказ принят!');
                    document.querySelectorAll("form").forEach(f => f.reset());
                    cart = {};
                    saveCart();
                    showCart();
                    showMiniCart();
                }
                else {
                    alert('Повторите заказ');
                }
            }
        );    
    ...
READ ALSO
Как выполнить свой код&hellip; (wordpress, woocomerce)

Как выполнить свой код… (wordpress, woocomerce)

Как сделать так, чтобы после обновления статуса заказа на "обработка", выполнялся мой код? Как вообще можно отловить изменение статуса? Это...

128
Поиск URL в строке

Поиск URL в строке

есть массив, в нем есть текст в котором находятся ссылки, и есть просто текст

100
Почему laravel дергает Kernel при каждом запросе?

Почему laravel дергает Kernel при каждом запросе?

Имеется в разработке небольшой сервис для статистикиСуть задачи на кроне - это съем позиций с яндекса

100
Ajax reload captcha

Ajax reload captcha

В файле captchaphp я создаю gif изображения с помощью библиотеки GD и вывожу его в форме для отправки комментария к статье

104