2011-09-19 2 views
0

jQuery에서 Django에 POST 요청을 보내고 꽤 간단한 작업을 수행하고 있습니다. 아주 간단한 시나리오에서 이상한 오류가 발생했습니다. 나는 다음과 같은보기 기능이 있습니다간단한 JSON에 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을 설정하지 않으면 모든 것이 정상적으로 작동합니다. 문제는 jQuery를 다시 구문 분석하지 않고도 JSON을 반환하고 싶습니다. 아무도 내 실수를 여기에서 발견 할 수 있습니까? 나는 그것을 볼 수없는 것 같습니다.

답변

2

JSON이 유효하지 않습니다. 식별자 주변에는 인용 부호가 필요하므로 success 대신 "success", cause 대신 "cause" 대신 인용 부호가 필요합니다.

+0

감사합니다. JS {success : true}가'{ 'success': true}'와 같기 때문에 이것이 필요하다는 것을 알지 못했습니다. –

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

슈퍼 감사합니다. 감사합니다. 그 일을 좀 더 쉽게하고 템플릿을 쓸 필요가 없다는 것을 의미합니다. –