3

我正在使用 ajax 函数来获取用于呈现 Google 饼图并在 javascript 中加载这些数据的数据,但有些饼图没有呈现,但是当我将 AJAX 输出硬编码到 javascript 饼图函数中时,它确实呈现完美。下面是我的代码,任何人都可以告诉我有什么问题吗?感谢您的帮助。

这就是它工作时的样子

<?php
$sales_data = koolajax.callback(get_asin_repo($asin,$sku));
?>

JS在这里:

// AJAX Output is ['POS', 'Sold This Month'],['AZN CG UK',893],['AZN JT UK',449],['AZN PT UK',1349]

        alert($sales_data);

        //var data = google.visualization.arrayToDataTable([$sales_data]);//This doesn't work

        //This Works
        var data = google.visualization.arrayToDataTable([['POS', 'Sold This Month'],['AZN CG UK',893],['AZN JT UK',449],['AZN PT UK',1349]]);

        var options = {
            title: 'Statistics For '+$asin
        };

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

3 回答 3

1

这真的很简单。我需要做的就是从数据库中以 JSON 格式获取数据并将其传递

var data = new google.visualization.DataTable($sales_data);

函数代替

var data = google.visualization.arrayToDataTable([$sales_data])

它有效。感谢大家的支持和时间......

于 2012-08-06T12:24:43.730 回答
0

您必须检查从服务器返回的变量类型,并以 GoogleChart 可以理解的方式对其进行打包。

在您的情况下,您请求 google.visualization.arrayToDataTable 为您创建一个 DataSource 实例。但是该静态方法还要求遵循以下规则:

此方法接受一个二维数组并将其转换为 DataTable。请参阅 Google 图表文档

因此,在调用该例程之前进行检查。

if ( $sales_data instanceof Array )
{
  var willWork = [];
  var entry;
  while ( $sales_data.length )
  {
    entry = $sales_data.shift();
    if ( !(entry instanceof Array) || entry.length < 2 )
      window.alert( 'Incorrect server return. Call support.' );
    willWork.push( entry );
  }
}
else
  window.alert( 'Incorrect server return. Call support.' );
于 2012-08-04T23:25:47.953 回答
0

谷歌饼图从 PHP 获取数据

自 4 小时以来,我一直在搜索如何将数据从 PHP 填充到谷歌饼图,但没有找到任何解决方案,实际上,我的数据格式在 PHP 中是错误的。您可以使用这种方式在 PHP 中准备数据:

function yourFunction(){
    $data = array();
    $data[0] = array("Status", "Revenue");
    $data[1] = array('Pending', 500);
    $data[2] = array('Confirmed', 1000);
    $data[3] = array('Payable', 3000);
    return json_encode($data );
}

在前端解析数据:

var obj = JSON.parse(data);
var data = new google.visualization.arrayToDataTable(data);
于 2017-05-18T07:56:56.863 回答