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可以
请清除浏览器历史记录,然后运行应用程序。
我正在开发我的第一个 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可以
请清除浏览器历史记录,然后运行应用程序。