簡體   English   中英

如何以json格式返回數據?

[英]how to return data in a format 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 

在您的情況下,Django中的每個視圖都必須返回HttpResponse對象:

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

我還建議您返回字典而不是列表作為答復:

data = {'result': 'ok'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM