【发布时间】:2014-11-05 15:59:24
【问题描述】:
我看到有人问过其中一些问题,但我尝试实施他们的解决方案,但对我没有用。
我正在尝试使用 POST 向 django 视图发送一个基本的 AJAX 请求。这是我的 JQuery:
$('#save-button').click(function() {
var names = ['BLOGGS Joe', 'SMITH John'];
data = JSON.stringify(names);
$.ajax({
"contentType": "application/json; charset=utf-8",
"data": data,
"url" : "/ajax/myteam/save/",
"type": "POST",
"success": function(response) {
}
});
});
这是我的 Django 视图:
def myteam_save(request):
if request.method == 'POST':
if request.POST:
print 'Hurray'
else:
print 'Boo'
response = HttpResponse(json.dumps({'code':'ok'}), content_type='application/json')
return response
当我检查 Firebug 中发生的事情时,我发现帖子正在按我的意图进行,但 request.POST 中的 QueryDict 对象始终为空。
我一直很小心我认为的 csrf 令牌,甚至尝试在我的设置中关闭“django.middleware.csrf.CsrfViewMiddleware”,但这似乎没有效果。
我做错了什么?
感谢您的帮助!
【问题讨论】:
-
"contentType": "application/json; charset=utf-8"您没有将 JSON 发送到服务器。此外,应该是dataType:'json'告诉success function将response视为可解析的 JSON 对象。就django响应而言...直接访问页面,调试直到得到输出,验证输出确实是json。 -
@Ohgodwhy 感谢您的回复。内容类型只是我试图匹配其他人的代码来解决问题而忘记改回来。直接访问页面是什么意思(对不起,如果是愚蠢的问题)?