【发布时间】:2017-12-13 11:13:41
【问题描述】:
这是我的看法。
我将 JsonResponse 返回到 ajax 请求,从我的视图 'line_product_total': total, 和其他上下文中捕获传入数据
def get(self, request, *args, **kwargs):
cart = self.get_object()
product_id = request.GET.get('product')
delete_product = request.GET.get('delete', False)
product_added = False
if product_id:
product_instance = get_object_or_404(Product, id=product_id)
amount = request.GET.get('amount', 1)
try:
if int(amount) < 1:
delete_product = True
return HttpResponse('IntegrityError', delete_product)
except:
raise Http404
cart_product, created = CartProduct.objects.get_or_create(cart=cart, product=product_instance)
if created:
product_added = True
if delete_product:
cart_product.delete()
else:
cart_product.amount = amount
cart_product.save()
if not request.is_ajax():
return HttpResponseRedirect(reverse('e_commerce:cart'))
# return cart_product.cart.get_absolute_url
if request.is_ajax():
try:
total = cart_product.line_product_total
except:
total = None
data = \
{
'deleted': delete_product,
'product_added': product_added,
'line_product_total': total,
}
return JsonResponse(data)
cart = Cart.objects.get(pk=cart.pk)
return render(request, 'sales/cart.html', {'cart': cart})
js
$('.type_number').change(function () {
var product = $(this).next('input[type=hidden]').val();
var amount = $(this).val();
var data = {
product:product,
amount: amount
};
console.log(data);
$.ajax({
type: 'GET',
url: '{% url "e_commerce:cart" %}',
data: data,
success: function (data) {
$('#jquery-message').text('Added' + data.product_added + 'Deleted' + data.deleted);
if (data.deleted) {
$('#product-'+product).fadeOut;
}
else {
$('#product-line-total-'+product).text(data.line_product_total);
}
},
error: function(response, error) {
$('#add-form').submit()
}
})
})
模板
<form action="." method="GET">
<h4 id="product-line-total-{{ product.id }}">{{ product.line_product_total }}</h4>
<input class="type_number" style="text-align: center;margin-left: -50px;" title="" type="number" name="amount" value="{{ product.amount }}">
<input type="hidden" name="product" value="{{ product.product.id }}">
<button type="submit"></button>
</form>
简而言之,我无法在我的 ajax 中捕获变量 line_product_total
它只是说Unresolved variable line_product_total
但我正在发送这个变量。什么问题? 伙计们至少告诉我问题本身不能以任何方式解决问题
提前谢谢你:)
【问题讨论】:
-
这是在哪里说的?显示整个错误消息。
-
没有错误信息,但我当然知道原因。数据不是来自我的views.py
-
如何抓数据?请帮帮我丹尼尔罗斯曼
-
如果这是问题所在,为什么
data.product_added或data.deleted不会出错? -
我不知道,但是 line_product_total jquery 说没有这样的变量:(
标签: javascript jquery python ajax django