Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django返回JsonResponse并捕获ajax请求中的数据_Javascript_Jquery_Python_Ajax_Django - Fatal编程技术网

Javascript Django返回JsonResponse并捕获ajax请求中的数据

Javascript Django返回JsonResponse并捕获ajax请求中的数据,javascript,jquery,python,ajax,django,Javascript,Jquery,Python,Ajax,Django,这是我的看法。 我将返回JsonResponse到ajax请求,其中捕获来自我的视图'line\u product\u total':total、和其他上下文的传入数据 def get(self, request, *args, **kwargs): cart = self.get_object() product_id = request.GET.get('product') delete_product = request.GET.get('delete',

这是我的看法。 我将返回JsonResponse到ajax请求,其中捕获来自我的视图
'line\u product\u 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})
模板

<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>

{{product.line_product_total}
简言之,我无法在我的ajax中捕获可变行\产品\总计 它只是说
未解析变量行\产品\总计

但是我发送这个变量。什么问题? 伙计们,至少告诉我问题本身在任何方面都不能做什么


提前感谢:)

您的视图代码并不总是返回JsonResponse。您应该跟踪视图执行(在每个
return
语句之前添加一些
print
或-better-
logging.debug()
),还应该记录您在客户端得到的有效响应,而不是盲目地假设您有一个状态为200的json响应

而且你的代码真的很糟糕,甚至很危险

首先也是最重要的一点,GET请求必须是幂等的(它必须更改服务器的状态)。对从数据库中创建/更新/删除对象的请求使用GET确实会带来麻烦


那么,异常处理程序不仅仅是无用的,它们是有害的。它们只捕获任何异常(包括
SystemExit
!)并默默地忽略它们,因此您永远不会知道什么时候、什么时候、如何以及为什么会出错。尽量缩短
try
块(如果可能的话,只捕获一条语句),只捕获您期望并知道如何处理的异常,log记录您捕获的任何内容(尽可能多的上下文信息),如果您真的不知道如何处理异常,就让它传播。用户将收到500个错误(是的,狗屎会发生),并且(假设您的服务器和项目配置正确),您将收到一封带有完整回溯等功能的错误电子邮件,这样您就知道出了问题,并有机会修复它。

这是怎么说的?显示整个错误消息。没有错误消息,但我肯定知道原因。数据不是从我的视图传入的。py如何捕获数据?请帮助我Daniel Rosemani如果这就是问题所在,为什么它在
数据上没有错误。product\u添加了
数据。删除了
?我不知道,但line\u product\u total jquery说没有这样的变量:(是的,我在Chrome网络选项卡视图中检查了它,返回数据100%良好,但jquery无法显示。好的,谢谢你的建议和回答
<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>