jQuery 错误的数据属性

jQuery wrong data attribute

我正在开发我的第一个 Django 项目(IDE:PyCharm,OS:Win10)。 .js 有问题。我在脚本中将名为 'nmb' 的变量重命名为 'quantity'。创建此变量是为了计算用户购物车中的产品。然后我得到一个错误,ItemInCart 模型得到一个 'undefined' quantity 而不是一些可数的值。发生这种情况是因为只有 8000 端口 jQuery 仍在寻找 'nmb' 而不是数据属性名称 'quantity'。 运行 我的应用程序在任何其他端口上,例如 8023 一切正常。

JS

$ (document).ready(function () {
   var form = $('#form_buy_item');
   console.log(form);
   form.on('submit', function (e) {

       e.preventDefault();

       var quantity = $('#quantity').val();
       console.log(quantity);
       var csrf_token;
       var submit_btn = $('#submit_btn');
       var item_id = submit_btn.data('item_id');
       var item_name = submit_btn.data('item_name');
       var item_price = submit_btn.data('item_price');
       console.log(item_name, item_id);

       var data = {};

       data.item_id = item_id;
       data.item_name = item_name;
       data.quantity = quantity;
       csrf_token = $('#form_buy_item [name = "csrfmiddlewaretoken"]').val();
       data["csrfmiddlewaretoken"] = csrf_token;

       // use action attribute for multi-language support
       var url = form.attr("action");

       console.log(data);

       $.ajax({
           url: url,
           type: 'POST',
           data: data,
           cache: true,

           success: [ function (data) {
               console.log("OK");
               console.log(data.items_total_count);
               if (data.items_total_count){
                   $('#cart_total_quantity').text('data.items_total_count')
               }

           } ],
           error: function() {
                    console.log("error")
               }
       });



       $('.cart-items ul').append('<li>'+item_name +', ' + quantity + ' item(s), '  + item_price + '$ per item '+
           '<a class="delete-item" href=""> x <a>' + '</li>')
   });



   function displayCartItems(){
       $('.cart-items').toggleClass('hidden');
   }

    $('.cart-container').on('click, hover', function (e) {
        e.preventDefault();
        displayCartItems();

    });

    $('.cart-container').mouseover('click, hover', function (e) {
        e.preventDefault();
        displayCartItems();
    });
    $('.cart-container').mouseout('click, hover', function (e) {
        e.preventDefault();
        displayCartItems();
    });

    $(document).click('click', 'delete-item', function(e) {
        e.preventDefault();
        $(this).closest('li').removeAttr()
    });

});     

型号

class ItemInCart(models.Model):
    session_key = models.CharField(max_length=128, null=True, blank=True, default=None)
    order = models.ForeignKey(Order, on_delete=models.SET_DEFAULT, blank=True, null=True, default=None)
    item = models.ForeignKey(Item, on_delete=models.SET_DEFAULT, blank=True, null=True, default=None)
    quantity = models.IntegerField(default=1)
    price_per_item = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    total_price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    is_active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)

    class Meta:
        verbose_name = 'Item in cart'
        verbose_name_plural = 'Items in cart'

    def save(self, *args, **kwargs):
        price_per_item = self.item.price
        self.price_per_item = price_per_item
        self.total_price = int(self.quantity) * self.price_per_item

        super(ItemInCart, self).save(*args, **kwargs)

观看次数

def cart_add(request):
    return_dictionary = dict()
    session_key = request.session.session_key
    print(request.POST)
    data = request.POST
    item_id = data.get('item_id')
    quantity = data.get('quantity')
    # is_delete = data.get('is_delete')

    new_item = ItemInCart.objects.create(session_key=session_key, item_id=item_id, quantity=quantity)

    items_total_count = ItemInCart.objects.filter(session_key=session_key, is_active=True).count()

    return_dictionary['items_total_count'] = items_total_count

    print(request.POST)
    return JsonResponse(return_dictionary)

这发生在 8000、8001

8024可以

请清除浏览器历史记录,然后运行应用程序。