我正在尝试在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)
}
});
});
});
当客户端用户更改值时,ajax代码发送json数据。 但是服务器端视图以“fruit = apple”的形式接收表单中的数据。 我认为这不是json数据格式。所以,我不知道如何解析数据。
我尝试解析如下,但我在调用json.dumps(数据)后得到500内部服务器错误
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')
答案 0 :(得分:4)
您需要将数据发布为JSON字符串而不是JavaScript对象。
data: JSON.stringify({'fruit': selected})
应该这样做。另请注意,您需要{Django}中的json.loads
数据来实际执行任何操作。
答案 1 :(得分:0)
请这样发布JSON字符串。
data: {'data': JSON.stringify({'fruit': selected})}
并收到类似
data = json.loads(request.POST.get('data', ''))