我在这里做了一件非常简单的事情,从jQuery向Django发出POST请求,我在一个非常简单的场景中遇到了一个奇怪的错误。我有以下视图功能:
from django.views.generic.simple import direct_to_template as dto
def do_login(request):
if request.method == "POST":
return dto(request, "path/to/template.json", {
'success': False,
'cause': None
}, mimetype="text/json")
这是我的模板:
{ success : {{success|lower}}{% if cause %}, cause : {{cause}}{% endif %} }
...这是我的jQuery:
$.ajax("/login/", { type: "POST",
data: $("#loginForm").serialize(),
success: function(data) {
console.log("login response: " + data);
},
error: function(data, stats, error) {
console.log("login fault: " + data + ", " +
stats + ", " + error);
}
});
非常简单,对吧?这是我在控制台中得到的内容:
login fault: [object Object], parsererror, SyntaxError: Unexpected token s
这里出了什么问题?如果我没有在我的渲染方法上设置mimetype
,那么一切正常。问题是,我想返回JSON而不必强制jQuery重新解析它。谁能在这里发现我的错误?我似乎无法看到它。
答案 0 :(得分:2)
JSON无效。您需要在标识符周围使用引号,因此"success"
代替success
和"cause"
而不是cause
。
答案 1 :(得分:1)
from django.utils import simplejson as json
def do_login(request):
if request.method == "POST":
return HttpResponse(json.dumps({'success': False, 'cause': None}), content_type='application/json')