首页 > 解决方案 > AJAX 数据未发布以在 Django 中查看

问题描述

我已经实现了一个基本的结帐,其中用户可以通过“地址”类从地址列表中选择一个送货地址。它适用于服务器端,但我想使用 AJAX 来避免每次选择都刷新页面。但是,该代码没有发布任何数据。我究竟做错了什么?

视图.py

def pick_address(request):
if request.method == 'POST':
    checkout = Checkout.objects.get(pk=request.POST.get('checkout'))
    checkout.shipping_address = ShippingAddress.objects.get(pk=request.POST.get('address'))
    checkout.save()
    return HttpResponse('success')

pick_address.js

<script>
    $('.address').click(function () {
        $.ajax({
            type: 'POST',
            url: '{% url 'pick-address' %}',
            dataType:'json',
            data: {
                checkout: {{ checkout.pk }},
                address: {{ address.pk }},
                csrfmiddlewaretoken: '{{ csrf_token }}'
            },
            success: function (data) {
                if (data['success']) {
                    alert('success!');
                }
            }
        });
    });
</script>

标签: javascriptpythonajaxdjango

解决方案


views.py

def pick_address(request):
    if request.method == 'POST':
        checkout = Checkout.objects.get(pk=request.POST.get('checkout'))
        checkout.shipping_address = ShippingAddress.objects.get(pk=request.POST.get('address'))
        checkout.save()
        ctx={'success':True}
    return HttpResponse(json.dumps(ctx),content_type='application/json')

pick_address.js

success: function (data) {
                if (data.success) {
                    alert('success!');
                }
            }

推荐阅读