Django-.ajax()方法无法正常工作

时间:2018-09-21 14:03:43

标签: javascript jquery ajax django

我正在编写Ajax代码以访问数据库以编辑模型实例。但是代码运行不正常。第一个getColumnProperty(1, 'category')语句确实有效,但其他alert语句则无效。 alertsuccess中的代码不响应。一切似乎都很好。我不知道这是怎么发生的。

book / detail.html:

error

cart.view.py:

<script>
    $(document).ready(function () {
        $("#add").click(function() {
            alert('clicked');
            $.ajax({
                url: '{% url "cart:add_to_cart" %}',
                // handle a successful response
                success: function (response) {
                    alert("Testing.");
                    ("#cartButton").text("Cart" + "(" + response.quantity + ")");
                },
                error: function (response) {
                    alert('Got an error');
                }
            });
        });
    });
</script>

购物车网址:

def add_books(request):
    c = Cart.objects.get(user=request.user)
    q = request.GET.get('quantity')
    book_id = request.GET.get('bookID')

        <some code here>

    response = {
        'quantity': BooksInCart.objects.filter(cart=c).aggregate(item_quantity=Sum('quantity'))['item_quantity']
    }
    return JsonResponse(response)

1 个答案:

答案 0 :(得分:0)

如果要更改数据库中的数据,则应使用后类型请求。在您的ajax调用中包含method: 'POST'和csrf令牌,然后在您的视图中检查是否有post-type请求: if request.method == 'POST':

要设置csrf令牌,请将{% csrf_token %}放入模板中以呈现令牌,然后用户JQuery将令牌值加载到data调用的ajax部分中: data = {'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val()}