2014-10-30 64 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