Django Ajax调用返回数量

2024-10-01 17:38:19 发布

您现在位置:Python中文网/ 问答频道 /正文

目前使用django-carton应用程序,我有一个django视图,它返回我在ajax调用中使用的JSON数据。总的来说,我已经让它工作了,但是我在努力解决如何通过项目数量(使用ajax)的问题。在

在模板中,我可以使用以下方法调用项目数量:

{% for item in cart.items %}
{{ item.quantity }}

ajax调用连接到视图以返回Json数据:

^{pr2}$

这是我的Jquery/Ajax调用:

$(document).ready(function() {
        var productForm = $(".form-product-ajax") // #form-product-ajax
        productForm.submit(function(event) {
            event.preventDefault();
            // console.log("Form is not sending")
            var thisForm = $(this)
            //var actionEndpoint = thisForm.attr("action");
            var actionEndpoint = thisForm.attr("data-endpoint");
            var httpMethod = thisForm.attr("method");
            var formData = thisForm.serialize();
            $.ajax({
                url: actionEndpoint,
                method: httpMethod,
                data: formData,
                success: function(data) {
                    var submitSpan = thisForm.find(".submit-span")
                    if (data.added) {
                        submitSpan.html("In cart <button type='submit' class='btn btn-link'>Remove?</button>")} 
                    var currentPath = window.location.href
                    if (currentPath.indexOf("") != -1) {
                        refreshCart()
                    }
                },
                error: function(errorData) {
                    console.log("error")
                    console.log(errorData)
                }
            })
        })

        function refreshCart() {
            console.log("in current cart")
            var cartTable = $(".cart-table")
            var cartBody = cartTable.find(".cart-body")
            // $(cartBody).empty()
            var productRows = cartBody.find(".cart-product")
            var cartTotal = cartTable.find(".cart-total-sec")
            var currentUrl = window.location.href
            var refreshCartUrl = '/api/cart/'
            var refreshCartMethod = "GET";
            var data = {};
            $.ajax({
                url: refreshCartUrl,
                method: refreshCartMethod,
                data: data,
                success: function(data) {
                    console.log("success")
                    console.log(data)

                    if (data.products.length > 1) {
                        $(cartBody).empty()
                        productRows.html("")
                        $.each(data.products, function(index, value) {
                            console.log(value)
                            console.log(data.count)

                            cartBody.append("<tr><td>" + value.name + "</td><td>" + value.price + "</td></tr>")
                        })
                        cartTotal.find(".cart-total").text(data.total)

                        console.log(data.total)



                    } else {
                        window.location.href = currentUrl
                    }

                },
                error: function(errorData) {
                    console.log("error")
                    console.log(errorData)
                }
            })
        }
    })

Tags: logdatavaluevarajaxfunctionerrorfind
1条回答
网友
1楼 · 发布于 2024-10-01 17:38:19

您必须指示您的$.ajax()调用需要JSON格式的数据,这样datasuccess回调中被正确解析:

$.ajax({
    url: refreshCartUrl,
    method: refreshCartMethod,
    data: data,
    dataType: 'json',  // <- here
    success: function(data) {
        // ...
    },
    error: function(errorData) {
        // ...
    }
})

相关问题 更多 >

    热门问题