【问题标题】:load google charts through an ajax call通过 ajax 调用加载谷歌图表
【发布时间】:2013-05-16 02:07:25
【问题描述】:

点击链接后,我正在尝试调用谷歌图表。这是我的函数的样子:

function getGraphData(id) {

    var ajax_url = '<?=URL?>ajaxlibrary/get-graph-data';

    $.ajax({
        type: 'POST',
        url: ajax_url,
        dataType: 'html',
        data: ({
            id : id
      }),
        cache: false,
        success: function(data) {
            $('a').removeClass("selected");
            $('#link_'+id).addClass("selected");
            alert(data);

        },
    });
}

所以我在这里想要实现的是为不同的喜欢加载不同的图表,所以假设我有政治图表、体育图表等。不过我不知道将 Google API 代码放在哪里,因为它似乎只是不工作......

编辑: 我像这样编辑了函数:

  $.ajax({
         type: "POST",
         dataType: "html",
         data: {id: id},
         url: '<?=URL?>' + 'ajaxlibrary/get-charts',
         success: function(datas) {
            console.log(datas);
            var data = google.visualization.arrayToDataTable([
                    datas
            ]);

            var options = {
                title: 'My Daily Activities'
            };

            var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
            chart.draw(data, options);
         }
    }); 

但我在从我的 ajax php 文件发送此数据流时遇到问题:

echo '[\'Task\', \'Hours per Day\'],
            [\'Work\',     10],
            [\'shit\',     50],
            [\'loop\',     25],
            [\'poop\',     15]';

响应不是有效的二维数组。如果我手动将值放入 javascript 文件中,它可以工作,所以问题出在响应中。

【问题讨论】:

    标签: jquery ajax google-visualization


    【解决方案1】:

    您可以使用以下代码通过 Ajax 调用加载 Google Charts。

    $.ajax({
      url: 'https://www.google.com/jsapi?callback',
      cache: true,
      dataType: 'script',
      success: function(){
        google.load('visualization', '1', {packages:['corechart'], 'callback' : function()
          {
    
                $.ajax({
                     type: "POST",
                     dataType: "json",
                     data: {id: YOURIDHERE},
                     url: '<?=URL?>' + 'ajaxlibrary/get-charts',
                     success: function(jsondata) {
                        var data = google.visualization.arrayToDataTable(jsondata);
    
                        var options = {title: 'My Daily Activities'};
    
                        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
                        chart.draw(data, options);
                     }
                });    
            ]);
    
          }
        });
        return true;
      }
    });
    

    您可以使用 Google API 加载任何其他图表类型,而不仅仅是核心图表。

    【讨论】:

    • 太棒了,效果很好。不过有一件事,我想传递我在原始 ajax 中的 ID,这样我就可以从 PHP 文件中加载特定的值。也许在加载数据时添加另一个 ajax 调用?
    • 查看注释代码 //在此处创建图表,您可以在此处添加您的内容。如果图表不需要您的内容,您也可以在此调用之外进行。\
    • 我知道你的意思,看看我编辑的第一篇文章,告诉我该怎么做。
    • 您可以将 id 传递给已编辑的 ajax 调用,使用数据参数类型:“POST”,数据:{id: IDHERE},其他内容原样
    • 必须是json数据类型吗?
    猜你喜欢
    • 2015-08-22
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多