每次用户从一些下拉菜单中选择值并提交它们时,我都需要更新图表。
我正在编写 Python 脚本来处理选定的选项并根据用户的选择从数据库中获取数据,然后使用字符串替换技术将数据传递给 HTML。javascript 从 Python 中获取数据,并使用谷歌图表 API 生成图表。
但这仅适用于一次。第一次后,用户选择并提交选择,图表保持不变。我可以使用 firebug 工具看到数据是正确的。
有人可以帮我吗?谢谢!
下面是我的javascripts:
script src="http://www.google.com/jsapi?key=ABQIAAAA1Vvq5pLyw5IAAQQtCIurLhSCGfxgLuOmAJcC-OBbFOMYrpib_BSypK7Qf_9YkaT-2SzpuOBRKp6Bqw" type="text/javascript"></script>
<script type="text/javascript">
google.load("jquery", "1.3.2");
</script>
<!--Load the AJAX API-->
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {packages: ['corechart']});
</script>
<script type="text/javascript">
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var data = new google.visualization.DataTable();
{%if chart_Data%}
data.addColumn('string','Date Time');
data.addColumn('number','Wireless Mini CCB Controls');
data.addColumn('number','FNX App Controls');
data.addColumn('number','Hoist Status');
data.addRows({{chart_Data}});
//var data = google.visualization.arrayToDataTable({{chart_Data}});
var options = {
title: 'Status of Hoists',
vAxis: {title: 'Status of Hoists'},
isStacked: true
};
var chart = new google.visualization.SteppedAreaChart(document.getElementById('status_chart'));
chart.draw(data, options);
{% endif %}
}
下面是我处理下拉列表菜单选择并将“GET”请求发送到我的 Python 处理程序的函数,它将返回一个替换字符串 {{chart_Data}}:
function monitorHoist(hoist_to_monitor,month,day,year){
var hoist_to_monitor_text = document.getElementById('hoist_to_monitor').options[document.getElementById('hoist_to_monitor').selectedIndex].value
var month_text = document.getElementById('month').options[document.getElementById('month').selectedIndex].value
var day_text = document.getElementById('day').options[document.getElementById('day').selectedIndex].value
var year_text = document.getElementById('year').options[document.getElementById('year').selectedIndex].value
$.ajax({
type: 'GET',
url: '/all?command=monitor&hoist_to_monitor=' + hoist_to_monitor_text +'&month='+month_text+'&day='+day_text+'&year='+year_text,
//data: hoist_to_monitor_text,month_text,day_text,year_text,
timeout: 60000,
success: function(data) {
$("#status").html('Success in sending request.');
//drawVisualization();
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$("#status").html('Timeout sending request.');
}
});
}
下面是图表的划分:
<div id='status_chart' style="width: 900px; height: 500px;"></div>