2014-04-04 125 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'}