Почему ajax не работает в первый раз с JsonResponse Django / Ajax - PullRequest
0 голосов
/ 06 мая 2019

Я добавляю свои товары в корзину, используйте кнопку с product.id.Попытка добавления в корзину без обновления страницы, и этот код работает, но не работает с первого раза, нужно обновить, после обновления это работает хорошо.

<a href="javascript:void(0);" class="add_to_cart" data-id="{{ product.id }}"><button>Add in the cart</button></a>

это мой URL

url(r'^cart/create/$', views.cart_create, name='cart_create'),

мойметод return JsonResponse, длина корзины и общая стоимость

def cart_create(request):
    cart = Cart(request)
    product_id = request.GET.get('product_id')
    product = Product.objects.get(id=product_id)
    cart.add(product=product)

    return JsonResponse({'cart_length':cart.get_length(), 'cart_total':cart.get_total_price()})

Ajax работает, но не первый раз (нужно обновить страницу) после добавления первого товара, работает хорошо без обновления

$(document).ready(function(){
    $(".add_to_cart").click(function(){
        product_id = $(this).attr("data-id")
        data = {
            product_id: product_id,
        },

        $.ajax({
            type: "GET",
            url: '{% url "cart:cart_create" %}',
            data: data,
            success: function(data){
                $(".cart_count").html(data.cart_length + " товаров " + data.cart_total + " &#8381;")
            },
        });
    });
});

header

{% if cart|length > 0 %}
    Our cart:

    <a href="{% url 'cart:cart_show' %}" class="cart_count">
        {{ cart.get_length }} products {{ cart.get_total_price }}
    </a>
{% else %}
    <a href="{% url 'cart:cart_show' %}">Cart empty</a>
{% endif %}
Server return "GET /cart/create/?product_id=1 HTTP/1.1" 200 after click.

И это работает, но не отображается в первый раз в шапке.Пожалуйста, помогите мне

Я понял, что если я уберу блок, если {% if cart|length > 0 %}{% else %}{% endif %} и оставлю только {{ cart.get_length }} products {{ cart.get_total_price }} &#8381;, он будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...