我正在使用谷歌图表绘制柱状图和折线图。如何检查图表是否绘制成功(或者数据表是否填充成功)?
目前,我只检查图纸表单是否已提交,并确保为数组索引设置了默认值,以避免任何尺寸问题。但我仍然想知道如何通过编程检查它的成功或失败。
我从谷歌得到的唯一提示是这个GadgetHelper响应,但我没有使用查询来生成数据。
我的代码如下:
<?php
if(isset($_POST['submit'])){
echo 'google.setOnLoadCallback(drawChart);';
}
?>
<script>
function drawChart() {
data = google.visualization.arrayToDataTable([
<?php
// populate array via PHP
?>
]);
options = {
// some options
};
chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options); // some way of checking return value for success??
// I 'd like to enable this only upon success, not when function is called
document.getElementById('chart_selector').disabled = false;
}
</script>
当图表绘制完成时,使用图表的"就绪"事件处理程序来启用元素。如果图表绘制失败,需要采取措施,您也可以勾选"错误"事件。
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
google.visualization.events.addListener(chart, 'ready', function () {
// do stuff when the chart is done drawing
document.getElementById('chart_selector').disabled = false;
});
google.visualization.events.addListener(chart, 'error', function () {
// do stuff when the chart fails to draw
});
chart.draw(data, options);
如果需要处理DataTable构造函数失败的情况,可以将构造函数调用封装在try-catch块中:
try {
var data = new google.visualization.DataTable();
// ...
}
catch (e) {
alert('DataTable construction failed');
}