我正在尝试从我的 Google App Engine 应用程序的数据存储区中读取数据,用它填充谷歌图表数据表,然后使用 谷歌图表示例中的源代码将整个事情可视化为图表,该示例使用嵌入在网页上的 Javascript 代码.
我的问题是获取数据。我想到了两种方法:要么直接在 javascript 代码中运行查询,要么从 python 代码运行查询,将该查询的结果作为模板值发送到 html 代码,过滤它以获取值 I'我感兴趣并以某种方式将整个事情传递给 javascript 代码,然后显示数据(看起来更复杂)。我已经尝试过第一个选项,但它似乎不起作用。由于我不确定我的数据存储区的 URL 是什么,但我认为它与使用它的服务器相同,因此我将 appengine 应用程序的 URL 作为参数传递给查询函数。我试图对此运行 SQL 查询,但出现错误。下面是对应的JS代码(单独)和整个HTML代码
function drawVisualization() {
var query = new google.visualization.Query('http://davidfirstapp.appspot.com');
query.setQuery('SELECT ac_current1, ac_voltage1 ORDER BY ac_current1 LIMIT 10');
query.send(handleQueryResponse);
}
function handleQueryResponse(response) {
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
var data = response.getDataTable();
visualization = new google.visualization.LineChart(document.getElementById('visualization'));
visualization.draw(data, {legend: 'bottom'});
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>
Google Visualization API Sample
</title>
<script type="text/javascript" src="//www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {packages: ['linechart']});
</script>
<script type="text/javascript">
var visualization;
function drawVisualization() {
var query = new google.visualization.Query('http://davidfirstapp.appspot.com');
query.setQuery('SELECT ac_current1, ac_voltage1 ORDER BY ac_current1 LIMIT 10');
query.send(handleQueryResponse);
}
function handleQueryResponse(response) {
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
var data = response.getDataTable();
visualization = new google.visualization.LineChart(document.getElementById('visualization'));
visualization.draw(data, {legend: 'bottom'});
}
google.setOnLoadCallback(drawVisualization);
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="visualization" style="height: 400px; width: 400px;"></div>
</body>
</html>
</p>