2011-09-19 68 views
0

回来,我在这里做一个非常简单的事情,做一个POST请求从jQuery来Django的,和我得到一个奇怪的错误了一个非常简单的场景。我有以下看法功能:的jQuery parsererror从Django的

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重新解析它。任何人都可以在这里发现我的错我似乎无法看到它。

回答

2

的JSON是无效的。您需要周围的标识符引号,所以"success"代替success"cause"而不是cause

+0

谢谢,固定它。我不知道这是必需的,因为在JS'{成功:真正}'是一样的'{“成功”:真正}'。 –

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') 
+0

超级有用,谢谢。这使事情变得更容易,意味着我不必为它编写模板。 –