Dev_nab
@Dev_nab

Django — Как добавить товар в корзину (AJAX)?

ПОПРАВИЛ ВОПРОС
Пытаюсь сделать, чтобы при нажатии на "Добавить в корзину" счетчик товаров (в корзине) в шапке сайта обновлялся автоматически (без перезагрузки страницы).
Разобрался с вьюхой теперь проблема только в JavaScript. Не идет запрос AJAX на сервер.

cart/static/js/ajax_add.js
$("#update").click(function() {
        $('#counter').html(function(i, val) {
            console.log(data)
            $.ajax({
                url: form.attr("action"),
                type: 'POST',
                data: data,
                cache: true,
                success: function() { alert('Request has returned') },

                error: function(){ console.log("error") }

            });
            return (+val+1);
        });
    });


HTML
<...>
<!-- КОРЗИНА в шапке сайта -->
{% with total_items=cart|length %}
    {% if cart|length > 0 %}
        <a href="{% url "cart:cart_detail" %}">
            КОРЗИНА
            ({{ total_items }})
         </a>
    {% else %}
         КОРЗИНА
         (<div id="counter">{{ total_items }}</div>)
     {% endif %}
{% endwith %}
<...>

<!-- Список товаров -->
{% for product in products %}
<...>
<!-- Кнопка добавления товара в корзину -->
    <form action="{% url "cart:cart_add" product.id %}" method="post">
        {{ cart_product_form }}
        {% csrf_token %}
        <input id="update" class="button add" type="submit" value="Добавить в корзину">
    </form>
{% endfor %}
  • Вопрос задан
  • 1180 просмотров
Решения вопроса 1
@iru
php dev
по событию success: пересчитывайте количество и делайте $("#counter").html(value);

либо в ответе с обработчика получаем количество и делаем опять же $("#counter").html(return);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kgb_zor
@kgb_zor
I need your traceback.
Никто не будет копаться в вашем коде , тем более в таком.Ваш вопрос больше смахивает на задание.
Выводите данные в консоль , чекайте traceback на сервере и кидайте сюда.Задача тривиальная, погуглите в конце концов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы