2

現在 2 列のデータが表示されているビュー ページがあり、まもなく 4 列に拡張されます。各列には、その特定のモデルの QuerySet の結果が含まれています。

これが私の views.py メソッドにあるものです:

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")

これにより、データの 2D 配列を次の形式でブラウザに送信できます。

[ { //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>");

Firebug は、GET リクエストが機能していることを示しており、応答タブでデータを確認できます。ただし、コンソールは出力します

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
var data = JSON.parse(results)

に置き換えるvar data = JSON.parse(results)と、このエラーは消えます

var peers = JSON.parse(data[0]);
var comps = JSON.parse(data[1]);

ある方法ではうまくいくのに、別の方法ではうまくいかないのはなぜですか?

4

1 に答える 1