当我尝试通过AJAX发布JSON数据并通过view.py(django框架的一部分)中的函数接收它时,我感到很困惑。
以下是使用ajax发送数据的客户端代码:
<script type="text/javascript">
var myEvent = {
user_token: {
userid: 1
},
title: "test title",
privilege: "public"
};
console.log($.toJSON(myEvent))
$.ajax({
url: '/gallery/new_report/',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: $.toJSON(myEvent),
dataType: 'text',
success: function(result) {
alert(result);
},
error: function(ts) {
alert("fail");
}
});
</script>
然后是views.py中的函数:
def new_report(request):
#return HttpResponse(request.body)
parameters = json.loads(request.body)
...
上面的代码不起作用但抛出异常说:
无法解码JSON对象
但如果我在此函数中取消注释注释行,则HttpResponse会返回正确的JSON字符串。
在这种情况下,如何通过ajax获取正确的JSON数据?
答案 0 :(得分:0)
我刚刚将其他人已经在评论中说过的内容放在一起。
我没有测试过代码,但它应该有点工作。
<script type="text/javascript">
var myEvent = {
user_token: {
userid: 1
},
title: "test title",
privilege: "public"
};
console.log(myEvent)
$.ajax({
url: '/gallery/new_report/',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: {'eventValues': myEvent},
dataType: 'text',
success: function(result) {
alert(result);
},
error: function(ts) {
alert("fail");
}
});
和python视图
def new_report(request):
values = request.POST.get('eventValues')
#assert False, values
parameters = json.loads(values)
...
答案 1 :(得分:0)
因为body是作为字节串发送的,所以
def new_report(request):
#return HttpResponse(request.body)
parameters = json.loads(request.body.decode(encoding='UTF-8'))
...
可能是您正在寻找的