Django中simplejson返回的JSON.parse错误
我有一个视图页面,当前显示了两列数据,很快将扩展为四列。每列都包含该特定模型的查询集结果 以下是我的views.py方法中的内容:Django中simplejson返回的JSON.parse错误,django,json,simplejson,Django,Json,Simplejson,我有一个视图页面,当前显示了两列数据,很快将扩展为四列。每列都包含该特定模型的查询集结果 以下是我的views.py方法中的内容: if request.REQUEST["type"] == "text": client = Client.objects.get(client_name = request.REQUEST["search"]) peerList = ClientPeers.objects.prefetch_related().filter(clie
if request.REQUEST["type"] == "text":
client = Client.objects.get(client_name = request.REQUEST["search"])
peerList = ClientPeers.objects.prefetch_related().filter(client = client.client)
compList = ClientCompetitors.objects.prefetch_related().filter(client = client.client)
else:
peerList = ClientPeers.objects.prefetch_related().filter(client = request.REQUEST["search"])
compList = ClientCompetitors.objects.prefetch_related().filter(client = request.REQUEST["search"])
for peer in peerList:
peerlst.append({"pid" : peer.parentorg.parentorg, "pname" : peer.parentorg.parentorgname})
for comp in compList:
complst.append({"cid" : comp.parentorg.parentorg, "cname" : comp.parentorg.parentorgname})
lst.append(simplejson.dumps(peerlst))
lst.append(simplejson.dumps(complst))
return HttpResponse(simplejson.dumps(lst), mimetype = "text/json")
这允许我以以下格式向浏览器发送二维数据数组
[ { //JSON }, { //JSON } ]
在jQuery.ajax成功函数中,我
function handler(results) {
var data = JSON.parse(results);
for (var i = 0; i < data[0].length; i++)
$("#available_peers").append("<li>" + data[0][i].pname + "</li>");
for (var i = 0; i < data[1].length; i++)
$("#available_competitors").append("<li>" + data[1][i].cname + "</li>");
如果将var data=JSON.parse(results)
替换为
var peers = JSON.parse(data[0]);
var comps = JSON.parse(data[1]);
为什么一个方法有效而另一个方法无效?调用将对返回的数据类型进行智能猜测。在您的示例中,function handler(results)
,results
变量已经是一个解码的JSON对象,在一个数组中包含两个项。JSON.parse(数据[0])
之所以有效,是因为您以字符串形式返回了JSON编码的数据
在放入输出数组之前,不要将单个列表元素编码为JSON:
lst.append(peerlst) # <-- Don't encode to JSON string here
lst.append(complst)
return HttpResponse(simplejson.dumps(lst), mimetype = "application/json") # <-- Single JSON encoding
lst.append(peerlst)#尝试更改text/json for application/json完整的.ajax()
调用是什么样子的?json数据是什么样子的?
lst.append(peerlst) # <-- Don't encode to JSON string here
lst.append(complst)
return HttpResponse(simplejson.dumps(lst), mimetype = "application/json") # <-- Single JSON encoding