简体   繁体   English

Google可视化图表ajax数据

[英]Google Visualization Charts ajax data

I'm trying to dynamically render a google visualization chart with an AJAX call in flask to set the data. 我正在尝试通过烧瓶中的AJAX调用来动态呈现Google可视化图表以设置数据。 User enters input then clicks a link which calls the ajax function to get the data. 用户输入输入,然后单击一个调用ajax函数的链接以获取数据。 the "/ajax_test" view will return a json object but the problem I have is i don't know how to correctly pass the data back into the DataTable function. “ / ajax_test”视图将返回一个json对象,但是我遇到的问题是我不知道如何正确地将数据传递回DataTable函数。 How do i pass the json data i'm getting from ajax to a variable for the drawchart function? 我如何将从ajax获取的json数据传递给drawchart函数的变量?

Chart function: 图表功能:

<script type="text/javascript">
function drawChart(){
     var data = new google.visualization.DataTable(jsondata);
      var options = {
             explorer: {},
          }; //end options

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }
</script>

Ajax function: Ajax功能:

<script type=text/javascript>
$(function() {
$('a#DrawChart').bind('click', function() {
  $.getJSON($SCRIPT_ROOT + '/ajax_test',
   {//input data sent to view}
  , function(data) {
    var jsondata = data.test_json;
    drawChart();

  });
  return false;
   });
  });
</script>

I have done something similar using the following code, this is a jinja2 example, so you have do adapt your code (change the way jsonData var is initialized): 我已经使用以下代码完成了类似的操作,这是一个jinja2的示例,因此您可以调整代码(更改jsonData var的初始化方式):

<script type="text/javascript">
        //load the Google Visualization API and the chart
    google.load('visualization', '1', {'packages': ['corechart']});

    google.setOnLoadCallback (createChart);

    var jsonData = {{ value_columns | tojson | safe }}

    function createChart() {
        var dataTable = new google.visualization.DataTable(jsonData);
        var chart = new google.visualization.LineChart(document.getElementById('chart'));
        //define options for visualization
        var options = {is3D: 'no', title: 'Some Title' };

        attachRedrawForTab(chart, dataTable, options);
        attachRedrawForAccord(chart, dataTable, options);
        //draw our chart
        chart.draw(dataTable, options);
    }

</script>

This method doesn't know where jsondata comes from: 此方法不知道jsondata来源:

function drawChart() {
    var data = new google.visualization.DataTable(jsondata);
    ...
}

Add jsondata as a parameter: 添加jsondata作为参数:

function drawChart(jsondata) {
    var data = new google.visualization.DataTable(jsondata);
    ...
}

And then in your Ajax call pass jsondata to the method: 然后在您的Ajax调用jsondata传递给方法:

function(data) {
    var jsondata = data.test_json;
    drawChart(jsondata);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM