2014-04-04 4 views
2

도와주세요.json 형식으로 데이터를 반환하는 방법은 무엇입니까?

. 다음 페이지로 보내면 컨트롤러에 의해로드됩니다.

from django.http import HttpResponse, HttpResponseRedirect, Http404 
from django.template import loader, RequestContext 
from reviewsFancy.models import ReviewsFancy 
from django.cong import settings 
import json 


def reviewsFancyCall(request): 
    if request.method == "POST" and request.is_ajax(): 
     c = ReviewsFancy(
      title=request.POST.get("title", ""), 
      name=request.POST.get("name", ""), 
      message=request.POST.get("message", ""), 
     ) 
     c.save() 

     with open(settings.BASE_DIR + 'qwe.txt', "wb") as f: 
      f.write(bytes('ok', 'UTF-8')) 

     data = [['result', 'ok']] 
     return json.dumps(data) 
    else: 
     with open(settings.BASE_DIR + 'qwe.txt', "wb") as f: 
      f.write(bytes('no', 'UTF-8')) 

     data = [['result', 'no']] 
     return json.dumps(data) 

결과적으로 모든 것이 의도 한대로 작동합니다. 데이터가 테이블에 성공적으로 기록됩니다.

.................. 
$.ajax({ 
    url: "/reviewsFancy/call/", 
    type: 'POST', 
    dataType: "json", 
    data: { 
     "title": title.val(), 
     "name": name.val(), 
     "message": message.val(), 
    }, 
    error: function() { 
     console.log('err'); 
     alert('error'); 
    }, 

    success: function(data) { 
     console.log('succ'); 
     console.log(data['result']); 
     title.val(''); 
     name.val(''); 
     message.val(''); 
     $('.reviews_fancy').toggleClass('hide'); 
     alert('success'); 
    }, 
............... 

를하지만 콘솔에서 나는 오류 얻을 :

POST http://127.0.0.1:8000/reviewsFancy/call/ 500 (INTERNAL SERVER ERROR) jquery.2.min.js:6 
XHR finished loading: "http://127.0.0.1:8000/reviewsFancy/call/". jquery.2.min.js:6 
err 
+0

데이터를 반환하기 위해 MIME 형식을 설정 했습니까? – fledgling

+0

백엔드 사이드를 확인 하시겠습니까? 디버그 모드에서 DJango를 실행하고 오류가 있는지 확인하십시오. – Nilesh

답변

1

장고의 모든보기가 귀하의 경우, HttpResponse 객체를 반환해야합니다

다음과 같이하지만 반환 된 데이터를 확인할 것
return HttpResponse(json.dumps(data), content_type='application/json') 

응답으로 목록이 아닌 사전을 반환하는 것이 좋습니다.

data = {'result': 'ok'} 
관련 문제