2015-07-13 32 views
0

我有一個顯示一些數據的頁面。它顯示的數據需要以JS Array格式(代表python嵌套列表)。使用Django獲取和使用python嵌套列表到JS

爲了做到這一點,我用一個JS函數,從Django視圖獲取數據:

js function:

var getDataFromFiles1 = function(theUrl) { 
    $.ajaxSetup({async: false}); 
    var xmlHttp = new XMLHttpRequest(); 
     xmlHttp.open("GET", theUrl, false); 
     xmlHttp.send(null); 
     return xmlHttp.responseText; 
}; 

views.py:

a = MyModel.objects.get(c=b, x=y) 
json_object = json.dumps(a.data) 
return HttpResponse(json_object, content_type="application/javascript") 

然而,數據來了回來的是typeof字符串,我以爲我可以用JSON.parse()來拉入JS Array,但是這樣做n逾時工作:

var data = getDataFromFiles1(url); 
console.log(data + " : " + typeof data) 
data = JSON.parse(data) 
console.log(data + " : " + typeof data) 

,並記錄上述包括給:

"[[\"example\", \"example\", \"example\", \"example\", \"not set\"], [\"example\", \"example\", \"example\", \"example\", \"not set\"]]" : string

[["example", "example", "example", "example", "not set"], ["example", "example", "example", "example", "not set"]] : string

我失去了一些東西明顯?如何創建與此數據的JS數組對象(在與模板標籤不會放棄在加載數據的靈活性?

回答

2

你不顯示你的模型,但我猜a.data已經是JSON - 所以你是雙重編碼它

json.dumps,就回到HttpResponse(a.data, content_type="application/javascript")

+0

這比我的答案有優勢,應該是可以接受的:它不會浪費完整的'json.dumps' - >'JSON.parse'循環! – franciscod

1

再次嘗試JSON.parse(...)它。也許Python端已經是JSON編碼,它因content_type="application/javascript"

+0

看一看。 Daniel Roseman的回答也是如此,我認爲這樣做更好! – franciscod