"加载数据"坚持AMChart

时间:2015-07-21 20:38:21

标签: javascript php html amcharts

您好

我正在使用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 还有其他需要,请告诉我。在这个问题上,我已尽力避免含糊其辞。

3 个答案:

答案 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