您好
我正在使用AMCharts框架从MySQL数据库中的数据制作图表。我陷入了#34;加载数据"而不是实际的图表。 (http://gyazo.com/b72693484ab39e2635c0a0ab21c889a5)
不,它实际上没有加载数据。我去了发射并在一小时后回来,它还没有被装上。当我使用AMCharts网站提供的数据时,它工作得很好,但是根据我自己的数据,没有这样的运气。
另外,我检查了this link,但它没有回答我的问题。所以这个问题不应该是重复的。
数据:
对于我的数据,我在2007年使用了一段星巴克股票收盘价100个日期。在开始项目的实际部分之前,它基本上是测试数据。只是为了让事情滚动。最初我从2100行开始,但是当我第一次得到"加载数据"消息,我将我的数据减少到简单的100行。但是,仍然没有这样的运气。
如果您想获取我使用的数据,我得到它的方式,这是我使用的R代码。
require('quantmod')
getSymbols("SBUX")
starbucks <- data.frame(SBUX)
starbucks[,7] <- row.names(starbucks)
starbucks <- data.frame(starbucks[,c(7,6)])
row.names(starbucks) <- NULL
colnames(starbucks) <- c("Dates","Values")
starbucks <- data.frame(starbucks[1:100,])
write.table(starbucks, file="path\\to\\file\\starbucks.csv", sep=",")
上传
我创建了一个名为&#34; chart&#34;的新数据库。并根据它制作了一张名为&#34; starbucks&#34;的桌子。星巴克下面有两列名为&#34; Dates&#34; (设为日期)和&#34;值&#34; (设置为float)每个给定长度为10.
然后我去导入并将CSV上传到此表并且所有导入都很好。
PHP
这是我用于PHP方面的代码。
<?php
// Connect to MySQL
$link = mysql_connect( 'localhost', 'root', '' );
if ( !$link ) {
die( 'Could not connect: ' . mysql_error() );
}
// Select the data base
$db = mysql_select_db( 'charts', $link );
if ( !$db ) {
die ( 'Error selecting database \'test\' : ' . mysql_error() );
}
// Fetch the data
$query = "
SELECT *
FROM starbucks";
$result = mysql_query( $query );
// All good?
if ( !$result ) {
// Nope
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die( $message );
}
// Print out rows
$data = array();
while ( $row = mysql_fetch_assoc( $result ) ) {
$data[] = $row;
}
echo json_encode( $data );
// Close the connection
mysql_close($link);
?>
Javascript
然后有Javascript方面的东西。
var chart = AmCharts.makeChart( "chartdiv", {
"type": "serial",
"dataLoader": {
"url": "../scripts/data.php"
},
"pathToImages": "http://www.amcharts.com/lib/images/",
"categoryField": "category",
"dataDateFormat": "YYYY-MM-DD",
"startDuration": 1,
"rotate": false,
"animationDuration": 0,
"minSelectedTime": 100,
"categoryAxis": {
"parseDates": true
},
"graphs": [ {
"valueField": "value1",
"bullet": "square",
"bulletBorderColor": "#FFFFFF",
"bulletBorderThickness": 2,
"lineThickness ": 2,
"lineAlpha": 0.5
} ]
} );
HTML
Theres当然是HTML。
<div id="chartdiv" style="width:100%; height:400px;"></div>
回到问题
复制/粘贴所有代码后,回到这篇文章的实际问题。 为什么我得到&#34;加载数据&#34;而不是实际的图表?
IF 还有其他需要,请告诉我。在这个问题上,我已尽力避免含糊其辞。
答案 0 :(得分:1)
我遇到了类似的问题。如果我保存json输出,删除前面的方括号,并使用它作为我的输入,它的工作原理:
JSON不起作用:
[
[],
{"Key1":"Val1","Key2":"Val1"},
{"Key1":"Val2","Key2":"Val2"},
...
]
JSON有效:
[
{"Key1":"Val1","Key2":"Val1"},
{"Key1":"Val2","Key2":"Val2"},
...
]
修改AmChart.makeChart位以测试json:
"dataLoader": {
"url": "test.json",
"format": "json"
},
..但我不知道如何在我的PHP代码中删除前面的大括号..希望这会让你更接近解决方案......
答案 1 :(得分:0)
我尝试了所有内容,最后我使用AJAX来检索内容并将其插入dataprovider中。
jQuery.ajax({
url: "api/chartdata,
type: "GET",
contentType: 'application/json; charset=utf-8',
success: function (resultData) {
console.log(resultData);
lineChart.dataProvider = JSON.parse(resultData);
lineChart.validateData();
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
答案 2 :(得分:0)
最后我有解决方案
我不知道为什么amchart输出“数据加载......”但不输出实际问题
如果有人不使用浏览器(我是铬)ctrl + shift + J查找错误信息,
他永远不会发现为什么总是“数据加载...”
确认导致“数据加载”情况的两个问题
1.你打开本地html和浏览器(或amchart)阻止javascript读取本地文件
2.你的文件根本不存在
你需要像apache这样的东西来模拟真实环境中的amchart工作 把html,json,lib放到httpdoc