这是我的看法。
我将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
但我发送这个变量。什么问题? 伙计们至少告诉我问题本身不能以任何方式做什么
提前谢谢你:)
答案 0 :(得分:2)
您的视图代码并不总是返回JsonResponse。您应该跟踪视图执行(在每个string myString = Resources.Resource.ResourceManager.GetString("StringKey");
语句之前添加一些print
或 - 更好 - logging.debug()
)并记录您在客户端获得的有效响应,而不是盲目地假设您确实有一个200状态的json响应。
你的代码真的很糟糕,甚至是危险的。
首先,GET请求必须是幂等的(必须 NOT 更改服务器的状态)。对于从数据库中创建/更新/删除对象的请求,使用GET实际上是在寻找麻烦。
然后你的异常处理程序无用,它们是有害的。他们只捕获任何异常(包括return
!)并默默地忽略它们,所以你永远不会知道什么时候,什么,如何以及为什么出错。保持SystemExit
块尽可能短(如果可能的话,单个语句),只捕获您期望的异常并知道如何处理,记录您捕获的任何内容(与您一样多的上下文信息)如果你真的不知道怎么处理异常只是让它传播。用户将收到500错误(是的,发生了屎),并且(假设您的服务器和项目配置正确),您将收到包含完整回溯等的错误电子邮件,因此您知道出现了问题,并且有机会修复它