谷歌图表错误'不是数组'关于Ajax更新

Google Charts Error 'Not An Array' on Ajax Update

本文关键字:数组 关于 Ajax 更新 谷歌 错误      更新时间:2023-09-26

我有一个简单的谷歌图表,它在初始页面加载时显示出以下数据:

[['days','AA','BB'], ['270',15,15],['240',19,19],['210',23,23],['180',31,31],['150',34,34],['120',47,47],['90',57,57],['60',71,71],['30',81,81],['0',94,94]]

当我试图通过Ajax调用刷新它时,我会得到一个错误"不是数组",该调用当前正返回相同的数据。

这是我正确绘制图表的初始函数:

    <script type="text/javascript">
      var chart;
      var options;
      google.load("visualization", "1.1", {packages:["bar"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var dataArray = ${initialChartData};
        var data = google.visualization.arrayToDataTable(dataArray);
        options = {
          chart: {
            title: 'Bookings by Days Before Holiday Start Date',
            subtitle: 'Sales, Expenses, and Profit: 2014-2017',
          }
        };
        chart = new google.charts.Bar(document.getElementById('columnchart_material'));
        chart.draw(data, options);
      }
    </script>

我的Ajax处理程序:

            $('#dataAnalysisForm').ajaxForm({
                success : function(responseText) {
                //error here as responseText 'is not an array'
                //it is the same String returned via Ajax as was 
                //used to render the initial chart
                //the initial data was written to the page server side. 
                    var data = google.visualization.arrayToDataTable(responseText);
                    chart.draw(data, options);
                }
            });

为了在初始页面加载和Ajax响应上正确更新,需要对上面的代码进行哪些更改?

只需再次执行此操作:

  var chart = new google.visualization.Bar(document.getElementById('columnchart_material'));
  chart.draw(data, options);

如果您的数据已经是正确的格式,则无需进行转换,因此您可以使用chart.draw(responseText, options)