dgo*_*sen 3 javascript django json google-visualization
我大致遵循这个例子。但一定是在做一些愚蠢的事情......
服务器端Django查看代码:
data_table = gviz_api.DataTable(description)
data_table.LoadData(data)
json = data_table.ToJSon()
return json
Run Code Online (Sandbox Code Playgroud)
这些是从 pydev 调试器复制粘贴的变量的值:(我对每个描述字段类型使用字符串只是为了测试)
描述:
[("sensor","string", "Sensor name"),
("timestamp","string", "Time"),
("value","string", "Sensor value")]
Run Code Online (Sandbox Code Playgroud)
数据:
[['testsensor', '2011-05-09 16:06:43.936000', '22.0'],
['testsensor', '2011-05-09 16:56:23.367000', '23.0']]
Run Code Online (Sandbox Code Playgroud)
json(由 google api 生成):
{cols:[{id:'sensor',label:'Sensor name',type:'string'},{id:'timestamp',label:'Time',type:'string'},{id:'value',label:'Sensor value',type:'string'}],rows:[{c:[{v:'testsensor'},{v:'2011-05-09 16:06:43.936000'},{v:'22.0'}]},{c:[{v:'testsensor'},{v:'2011-05-09 16:56:23.367000'},{v:'23.0'}]}]}
Run Code Online (Sandbox Code Playgroud)
接收 json 的客户端 javascript 代码:
var json_table = new google.visualization.Table(document.getElementById('dataview'));
var json_data = new google.visualization.DataTable(data, 0.6);
json_table.draw(json_data, {showRowNumber: true});
Run Code Online (Sandbox Code Playgroud)
这会导致在构造 DataTable 对象(第二行)时出现以下错误:
Uncaught Error: Invalid JSON string: {cols:[{id:'sensor',label:'Sensor name',type:'string'},{id:'timestamp',label:'Time',type:'string'},{id:'value',label:'Sensor value',type:'string'}],rows:[{c:[{v:'testsensor'},{v:'2011-05-09 16:06:43.936000'},{v:'22.0'}]},{c:[{v:'testsensor'},{v:'2011-05-09 16:56:23.367000'},{v:'23.0'}]}]}
in default,table.I.js:152
Run Code Online (Sandbox Code Playgroud)
我知道整个线索是确保架构格式与数据格式匹配,但情况似乎确实如此。它必须是一些简单的东西。
小智 5
确保将'unsafe-eval'脚本源放在Content-Security-Policy.
我用于谷歌地图和谷歌图表的政策:
<meta
http-equiv="Content-Security-Policy"
content="
default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval' maps.googleapis.com www.google.com www.google-analytics.com;
img-src 'self' csi.gstatic.com www.google-analytics.com maps.gstatic.com maps.googleapis.com;
style-src 'self' 'unsafe-inline' www.google.com fonts.googleapis.com ajax.googleapis.com;
font-src 'self' fonts.gstatic.com;
"
/>
Run Code Online (Sandbox Code Playgroud)