2014-04-04 121 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

在Django每个视图必须返回一个HttpResponse对象,你的情况:

return HttpResponse(json.dumps(data), content_type='application/json') 

我也建议你回复一个字典而不是列表作为你的回应:

data = {'result': 'ok'}