如何在jQuery Ajax中获取JSON数据对象响应
我想把数据整理成 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)