如何在Django视图中使用ajax POST解析json数据

eac*_*one 4 python django ajax jquery json

我正在尝试在 Django 视图中解析 json 数据。但是我遇到了问题。

我正在使用下面的代码片段。

$(document).ready(function(){
    $("#mySelect").change(function(){
        selected = $("#mySelect option:selected").text()
        $.ajax({
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            url: '/test/jsontest/',
            data: {
                   'fruit': selected,
                  },
            success: function(result) {
                    document.write(result)
                    }
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

当客户端用户更改值时,ajax 代码发送 json 数据。但是服务器端视图以“fruit=apple”的形式接收数据。我认为这不是json数据格式。所以,我不知道如何解析数据。

我尝试如下解析,但在调用 json.dumps(data) 后出现 500 Internal server error

class JsonRead(View):
    template_name = 'MW_Etc/jsonpost.html'
    def get(self,request):
        return render(request, self.template_name)

    def post(self,request):
        data = request.body
        logger.debug('json data received(%s)' % data)
        return HttpResponse(json.dumps(data), content_type='application/json')
Run Code Online (Sandbox Code Playgroud)

fak*_*nif 6

像这样发布 JSON 字符串。

data: {'data': JSON.stringify({'fruit': selected})}

并收到喜欢

data = json.loads(request.POST.get('data', ''))


Juu*_*nen 5

您需要将数据作为 JSON 字符串而不是 JavaScript 对象发布。

data: JSON.stringify({'fruit': selected})
Run Code Online (Sandbox Code Playgroud)

应该做。另请注意,您将需要使用json.loadsDjango 中的数据来实际使用它做任何事情。

  • 我自己从未遇到过,但也许这会有所帮助:http://stackoverflow.com/questions/25968752/how-to-do-json-handler-in-django (2认同)
  • json.loads( request.body.decode('utf-8') ) 对我有用! (2认同)