我正在尝试接收从我的jquery post调用发送的json对象,如下面的代码所示。
时我收到“POST OK”回调simplejson.loads(request.POST)
被评论。但是,一旦我尝试做一些事情请求我得到内部服务器错误500.任何想法或任何其他方式来处理json?
views.py
@csrf_exempt
def post_post(request):
print 'post_post'
if request.method == 'POST':
print 'POST'
messageData = simplejson.load(request.POST)
return HttpResponse(simplejson.dumps("POST OK!"))
else:
return HttpResponse(simplejson.dumps("POST NOT OK!"))
projectViewModel.js
var m = "Hello World";
console.log(m);
$.ajax({
url: 'postNewPost/',
type: 'POST',
dataType: 'json',
data: {client_response: JSON.stringify(m)},
success: function(result) {
console.log(result);
}
});
答案 0 :(得分:2)
这是因为您正在尝试将字典传递给loads()
方法。 request.POST
是一个带有参数的字典。您可以使用request.raw_post_data
获取原始内容。
在Django中也不推荐使用simplejson
,如果你使用的是Python 2.6+,你应该只使用Python json
包(import json
)
同样在你的js代码中你传递param client_response
和json。在这种情况下,您只需要将request.POST['client_response']
传递给loads()
方法。但更好的方法是直接传递json。
data: JSON.stringify(m)