【问题标题】:How to redraw Google Chart after every Ajax call on modal pop up每次在模态弹出的 Ajax 调用后如何重绘 Google 图表
【发布时间】:2016-06-21 09:53:10
【问题描述】:

当图表第一次加载初始默认 Ajax 回复时,它可以正常工作。唯一的问题是图表不会在第二次 ajax 调用时再次绘制自己。我知道 drawChart 函数没有第二次运行,我只是不知道为什么。

Below is my code


<script type="text/javascript">
    google.charts.load("current", {packages:['corechart']});
    google.charts.setOnLoadCallback(drawChart);
    function drawChart() {
      var data = google.visualization.arrayToDataTable([
        ["Element", "Density", { role: "style" } ],
       <?php for($i=$lastYears;$i<=$year;$i++)
        {
            //echo $leadGraph;die;
           if($leadGraph != 'leadgraph')
           {
             $users = "select * from";
           }else{
               //echo '41';die;
               //$users = $this->Report_model->count_report_users($selectType,$i);
              $users="select * from";
           }
        ?>
        ["<?php echo $i; ?>", <?php echo $users; ?>, "#DE2226"],
        <?php 
        } 
        ?>
      ]);

      var view = new google.visualization.DataView(data);
      view.setColumns([0, 1,
                       { calc: "stringify",
                         sourceColumn: 1,
                         type: "string",
                         role: "annotation" },
                       2]);
var options = {
        title: "<?php echo $graph; ?>",
        //width: 600,
        //height: 500,
        bar: {groupWidth: "95%"},
        legend: { position: "none" },
      };
      var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values"));
      chart.draw(view, options);
  }
  </script>

它在第二次 ajax 调用时显示以下错误

Error: google.charts.load() cannot be called more than once with version 45 or earlier.

【问题讨论】:

    标签: javascript php jquery ajax google-visualization


    【解决方案1】:

    您不能两次调用.load(),因此您创建了一个更新图表数据的函数 然后设置 google.setOnLoadCallback(load_chart_data);

    function load_chart_data(){
    $.ajax({
        url: 'get_data.php',
        data: {'startyear':startyear,'endyear':endyear},
        async: false,
        success: function(data){
            if(data){
                chart_data = $.parseJSON(data);
                updateChart(chart_data, "My Chart", "Data");
            }
        },
    });
    }
    function updateChart(chart_data, chart1_main_title, chart1_vaxis_title) {
    var chart1_data = new google.visualization.DataTable(chart_data);
    var chart1_options = {
        title: chart1_main_title,
        vAxis: {title: chart1_vaxis_title,  titleTextStyle: {color: 'red'}}
    };
    
    var chart1_chart = new google.visualization.ColumnChart(document.getElementById('columnchart_values'));
    chart1_chart.draw(chart1_data, chart1_options);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2013-05-30
      相关资源
      最近更新 更多