在GoogleCharts API中包含php脚本
我正在尝试用php模拟一个数据库,用于谷歌图表。我很难将php连接到Google图表。到目前为止,我已经尝试使用JSON.stringify、JSON.parse,。。。不幸的是,我没有找到合适的方法来包含生成的数据。我做错了什么 为了自动生成数据,我编写了以下test.php:在GoogleCharts API中包含php脚本,php,json,google-visualization,Php,Json,Google Visualization,我正在尝试用php模拟一个数据库,用于谷歌图表。我很难将php连接到Google图表。到目前为止,我已经尝试使用JSON.stringify、JSON.parse,。。。不幸的是,我没有找到合适的方法来包含生成的数据。我做错了什么 为了自动生成数据,我编写了以下test.php: $fakedate = new DateTime('2014-01-01 14:05:00'); $testTime = $fakedate->format('[H,i,s]'); $testNb = rand
$fakedate = new DateTime('2014-01-01 14:05:00');
$testTime = $fakedate->format('[H,i,s]');
$testNb = rand ( 1000 , 5000 );
for ($i = 0; $i <= 47; $i++)
{
$chartsdata[$i] = array($testTime, $testNb);
$fakedate->add(new DateInterval('PT10M'));
$testTime = $fakedate->format('[H,i,s]');
$testNb = rand ( 1000 , 5000 );
}
echo json_encode($chartsdata);
另一方面,我编写了以下柱状图:
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart()
{
var data = new google.visualization.DataTable();
data.addColumn('timeofday','testTime');
data.addColumn('number','testNb');
var jsonData = $.ajax({
url: "test.php",
dataType: "json",
async: false
}).responseText;
var obj = JSON.stringify(jsonData);
data.addRows(obj);
var options = {
title: 'Chart title',
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
这段代码似乎不正确:
var jsonData = $.ajax({
url: "test.php",
dataType: "json",
async: false
}).responseText;
您需要设置一个成功处理程序,而不是将jsonData分配给$.ajax.responseText。我认为那里没有这样的属性
应该是这样的:
$.ajax({
url: "test.php",
dataType: "json",
async: false,
success: function(data) {
jsonData = data;
}
});
由于调用是同步的,$.ajax将被阻塞,因此在创建图表之前不应调用成功处理程序。在javascript中有两种方法来处理此问题。首先,以代码为基础,需要使用JSON.parse: hrgui的回答中提到的第二个问题是在AJAX调用中使用成功处理程序:
function drawChart() {
var jsonData = $.ajax({
url: "test.php",
dataType: "json",
success: function (jsonData) {
var data = new google.visualization.DataTable();
data.addColumn('timeofday','testTime');
data.addColumn('number','testNb');
data.addRows(jsonData);
var options = {
title: 'Chart title',
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
});
}
第二种方法通常是首选的,但两者都可以
function drawChart() {
var jsonData = $.ajax({
url: "test.php",
dataType: "json",
success: function (jsonData) {
var data = new google.visualization.DataTable();
data.addColumn('timeofday','testTime');
data.addColumn('number','testNb');
data.addRows(jsonData);
var options = {
title: 'Chart title',
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
});
}