2014-10-30 67 views
0

我想將我的Django模板上下文中的mysql查詢結果發送到一個Javascript變量。我使用的是需要jQuery和jQuery UI的pivot.js https://github.com/nicolaskruchten/pivottable將MySQL查詢結果傳遞給Django中的Javascript/Jquery

在Django的觀點:

cursor.execute(query) 
data = dictfetchall(cursor) 
json_data = json.dumps(data, cls=DateTimeEncoder) 
context['pivot_data'] = json_data 

這工作,我能夠看到在JavaScript控制檯中的數據,但由於某種原因,它的格式不正確。

從我的Django模板:

{% load staticfiles %} 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> 
<script type='text/javascript' src="{% static "js/pivot.js" %}"></script> 
<script type='text/javascript'> 
    var pivotData = '{{ pivot_data }}'; 
    $("#output").pivotUI(
     pivotData, 
     { 
      rows: ["XXX"], 
      cols: ["YYY"] 
     } 
     ); 
</script> 

回答

2

以下將是一個字符串(這是您引用了一個JSON對象):

var pivotData = '{{ pivot_data }}'; 

你可以這樣做:

var pivotData = {{ pivot_data }}; 

但這是不好的做法,因爲它類似於評估JSON數據(並且在特殊字符上會失敗,因爲documented here)。

一個更好的辦法是:

var pivotData = JSON.parse('{{ pivot_data }}'); 
+0

謝謝!這解決了問題。我結束了使用:var pivotData = JSON.parse('{{pivot_data | escapejs}}'); – user3453012 2014-10-31 16:44:02