如何在jQuery Ajax中获取JSON数据对象响应

0 投票
1 回答
1013 浏览
提问于 2025-04-18 07:49

我想把数据整理成 crave-reply 的格式,像这样 crave-reply。我想把 crave 和它的所有回复一个一个地显示出来。在视图中,我能获取到 crave 及其所有回复。但是在把这些数据传递到响应时,我没有得到正确的数据。

views.py

def get_post_android_crave(request):
    if request.method=="GET":
        craves =list(CraveData.objects.all())
        te = FacebookUser.objects.get(person=request.user)
        img = te.image
        user_name=te.first_name+te.middle_name+te.last_name
        for crave in craves:
            reply= list(Comment.objects.filter(crave=crave))
            for reply_each in reply:
                response1 = {
                            'Crave': craves,
                            'reply': reply_each,}
                response2 = serializers.serialize('json',response1)
                response=json.dumps(response2 )
                print response        
                return HttpResponse(response, mimetype="application/json")

我遇到了一个错误,提示 AttributeError: 'str' object has no attribute '_meta'。

ajax 调用

$.ajax({
                url: domain+"/crave/getpostandroidcrave/",
                type: "GET",
                dataType: 'json',

                success: function (response) 
                {       
                        data= JSON.stringify(response)
                        alert(data);


                },
                error: function () 
                {
                    alert('some error');
                }
            });

在这里我遇到了错误,因为它进入了 ajax 的错误处理函数。有没有人能告诉我怎么才能在回复之后获取到 crave,回复之后的 crave。

举个例子:- crave1
Reply11
Reply12
crave2
Reply21
Reply22
就像这样。

1 个回答

0

1) 你无法获取所有数据,因为“return”放错地方了。

2) 关于异常处理,不要这样写:

response1 = {
    'Crave': craves,
    'reply': reply_each,}
response2 = serializers.serialize('json',response1)

比如试试这样写

import json
response1 = {
    'Crave': json.loads(serializers.serialize('json',craves)),
    'reply': json.loads(serializers.serialize('json',reply_each)),
}
response2 = serializers.serialize('json',response1)

撰写回答