当前位置: 首页 > 面试题库 >

每次Ajax调用后重新绘制Google图表

阎德辉
2023-03-14
问题内容

当图表第一次使用初始默认Ajax答复加载时,它可以正常工作。如果我添加console.log(chart_data),我会看到默认数据,然后在提交后我会看到新数据。唯一的问题是图表不会再次绘制。我知道drawChart函数不会第二次运行,我只是不知道为什么。我假设是的话,图表将重绘。抱歉,答案很明显。我对jQuery
/ Ajax非常陌生。

var chart_data;
var startdate = "default";
var enddate = "default";

function load_page_data(){
    $.ajax({
        url: 'get_data.php',
        data: {'startdate':startdate,'enddate':enddate},
        async: false,
        success: function(data){
            if(data){
                chart_data = $.parseJSON(data);
                google.load("visualization", "1", {packages:["corechart"]});
                google.setOnLoadCallback(function(){ drawChart(chart_data, "My Chart", "Data") })
            }
        },
    });
}

load_page_data();

function drawChart(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.BarChart(document.getElementById('chart1_div'));
    chart1_chart.draw(chart1_data, chart1_options);
}

任何帮助,将不胜感激。谢谢!


问题答案:

您只需要在页面中执行一次google.load。您正在加载数据的事实使事情变得有些复杂,但并没有太多。我建议您在javascript顶部执行一次google.load,并将load_page_data设置为回调。然后,您将从那里调用drawChart。修改后的代码如下所示:

var chart_data;
var startdate = "default";
var enddate = "default";
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(load_page_data);

function load_page_data(){
    $.ajax({
        url: 'get_data.php',
        data: {'startdate':startdate,'enddate':enddate},
        async: false,
        success: function(data){
            if(data){
                chart_data = $.parseJSON(data);
                drawChart(chart_data, "My Chart", "Data");
            }
        },
    });
}

function drawChart(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.BarChart(document.getElementById('chart1_div'));
    chart1_chart.draw(chart1_data, chart1_options);
}


 类似资料:
  • 问题内容: 我有以下Python Tkinter代码,该代码每10秒重绘一次标签。我的问题是,对我而言,似乎是一遍又一遍地在旧标签上绘制新标签。因此,最终,几个小时后,将有数百个图纸重叠(至少从我的理解来看)。这会占用更多内存还是会引起问题? 在我的示例中,我仅使用一个标签。我知道可以用来更新标签甚至是文本。但是实际要做的是刷新标签(如表格),按钮和填充物的网格,以与可用的最新数据相匹配。 从我了

  • 问题内容: 我有一个Google图表从我的数据库中提取数据,该数据可以按我的意愿工作。根据URL中的获取请求,它从所选表中提取数据。 我想通过基于下拉菜单中所选表的ajax来更新此图表。我无法突破的部分是通过ajax使数据响应。我认为下面的代码已经结束,但是我遇到了似乎无法摆脱的以下错误。 getdata.php:22未捕获的ReferenceError:未定义$ drawVisualizatio

  • 问题内容: 如果它是单独的JSON文件,如何检索和使用Google图表数据集?我尝试了jQuery getJSON,但无法正常工作。Google Viz应该使用JSON绘制条形图有本地的Google API方法吗?还是可以找到一种使用jQuery的方法以及如何使用?谢谢 问题答案: 作品。 查找的输出以使用正确的结构。 因此,如果服务器上有一个getjson.php脚本返回正确格式的json,则可

  • 我正在为一些大型查询制作一个脚本,并避免在php端超时,加上给用户一些输入,我试图在jquery上做大部分。 所以它的工作原理是这样的:首先,用户在一个select上选择一条记录。当他单击按钮时,我接到一个ajax调用,从json格式的记录中获取所需的详细信息。 通过响应,我得到了一个循环,对第一次调用的每个结果进行ajax调用。 如果我将async设置为false,它会工作,但是浏览器会死机,因

  • 我试图画一个三次线图,如下所示: 使用MPAndroid图表库。 我能画线,但不能画X轴和线之间的填充,如图所示。 已经经历了库和许多这样的问题。

  • 我正在遵循我上一篇关于绘画的帖子中的建议,即Oracle Swing教程。现在我对何时以及如何调用paintComponent()方法感到困惑。 下面是课程: 教程说,两种重绘方法都是重绘以前的鼠标位置以及新的鼠标位置。我明白,但是paintComponent从何而来?当我们说重绘时,它被调用了吗?如果是这样,为什么不在前面的位置也画一个矩形呢?