谷歌图表API-检查成功绘制


Google Charts API - check for success in drawing

我正在使用谷歌图表绘制柱状图和折线图。如何检查图表是否绘制成功(或者数据表是否填充成功)?

目前,我只检查图纸表单是否已提交,并确保为数组索引设置了默认值,以避免任何尺寸问题。但我仍然想知道如何通过编程检查它的成功或失败。

我从谷歌得到的唯一提示是这个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');
}