首页 > 解决方案 > 如何在 django 中使用 ajax 将 value 中的数量添加到购物车会话中?

问题描述

问题 当我单击添加到购物车按钮时,会触发 url cart_add 并将产品值添加到其中,但问题是未检索到数量表单值,因此产品实际上并未添加到购物车中。 我写的代码如下

脚本

$(document).on("click",".Id_submit",function(event){
      event.preventDefault();
      var selector = $(this).closest(".productID")
      console.log(selector.find("form").attr('action'))
      const form_data = {
        csrfmiddlewaretoken: $('#transactionIDValue input[name="csrfmiddlewaretoken"]').val()
      }
      $.ajax({
        type : 'POST',
        url: selector.find("form").attr('action'),
        data: form_data,
        success: function()
        {
          alert("Product added to cart")
        }
      });
      
    });

HTML

 <form id='transactionIDValue' class="d-inline" method="post">
              {{cart_product_form}}
              {% csrf_token %}
              <input type="submit" class="btn btn-primary shadow px-5 py-2 Id_submit" value="Add To Cart">

</form>

视图.py

@require_POST
@csrf_exempt
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(transactions, id=product_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        print(cd)
        cart.add(product=product, quantity=cd['quantity'])
    else:
        print('error')
    print(cart)

    # request.session['items_total'] = cart.product.count()
    return HttpResponseRedirect(reverse('main:home'),'success')

ISSUE 现在,问题是当{{cart_product_form}}被调用时,数量下降被设置到页面但是当我点击 add_to_cart 时,它的值没有添加到购物车中,所以我重新检查了它,甚至没有进入表单验证检查视图。任何人都可以帮助解决这个问题。这个问题仅在我使用 ajax 使用 add_cart 函数时出现,但如果我在没有 ajax 的情况下使用它,它就可以工作。我只想知道为什么 value from{{cart_product_form}}没有传递到购物车。

标签: javascripthtmldjangoajaxdjango-views

解决方案


推荐阅读