首页 > 解决方案 > 无法从 JS AJAX 将数据发送回 Django

问题描述

html-javascript

    var csrftoken = $('[name="csrfmiddlewaretoken"]').val();

    $('#Save').click(function () {

        var ajaxdata = {
            exam: $('#Exam').val()
        };

        $.ajax({
            url: '/save',
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify(ajaxdata),
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                "X-CSRFToken": csrftoken
            },
            credentials: 'include',
            success: function () {
                alert(ajaxdata);
                console.log(ajaxdata);
            },
            error:function (xhr, ajaxOptions, thrownError){
                console.log(ajaxdata);
            }
        });
    }

视图.py

import json
from django.http import HttpResponse

def save(request=request):

    data = json.loads(request.body)

    testexam = data['exam']
    testexam = request.POST.get('exam')
    testobj = MyObject.objects.filter(name="David").first()
    testobj.Exam = testexam
    testobj.save()

return HttpResponse(json.dumps({"success": True}), content_type="application/json")

这些是我现在的 html 和视图。

删除了“烧瓶”部分。

data = json.loads(request.body)

让我成功接收数据!

仍然不太明白为什么“ request.POST ”不起作用。

如果我设法知道原因,我会稍后回来更新!

感谢您的意见和有用的建议!

标签: javascriptjsonajaxdjango

解决方案


无需使用烧瓶。

这就是我接收数据的方式:

data = json.loads(request.body)

一切都很好!

感谢大家的意见、建议、回答!非常感谢!


推荐阅读