问题可能与您的 ajax 调用有关:
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var dataSet = [ ['year', 'fixedassets'],['2009', 1],['2010', 1.2],['2011', 1.6]];
var data = google.visualization.arrayToDataTable(dataSet);
var options = {
title: 'Company Performance'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
</body>
</html>
这有效,因此任何现有代码都不是问题。您的 ajax 调用格式使用了一堆折旧的 jQuery 调用,并且无法访问您的服务器,我无法对其进行测试,但您可以尝试以下操作:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.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() {
$.get("phpdata.php", function(response_data) {
var data = google.visualization.arrayToDataTable([response_data]);
var options = {
title: 'Company Performance'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
});
}
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
</body>
看看这是否有效。
我认为您遇到的问题是您有一个字符串:"['year', 'fixedassets'], ['2009', 1], ['2010', 1.2], ['2011', 1.6]"
并且您希望将其评估为数组:[['year', 'fixedassets'],['2009', 1],['2010', 1.2],['2011', 1.6]]
。解决此问题的简单但不安全的方法是使用eval()
. 你会说:
$.get("phpdata.php", function(response_data) {
var data = google.visualization.arrayToDataTable(eval('[' + response_data + ']');
只要您完全控制服务器,并且您没有收到任何可能从您的服务器发送的用户输入,这不是很好但可以正常工作。
这样做的“正确”方法是从您的服务器发送实际的 json,而不是发送您发送的内容,然后使用JSON.parse(response_data)
.