我尝试将一个简单的系列绘制成饼图;我的数据来自一个SQL数据库,我想将Mysqli查询保存在一个单独的文件中(如果需要的话,可以改变我的数据系列)。我会尝试逐步描述你在做什么,如果我做错了什么,请你纠正我(我在Highcharts和javascript中总是新手。 )。
1)MySqli
查询和json_encode
:在PHP文件中我使用此代码获取数据并将其转换为JSON格式:
$query=$mysqli->query("SELECT nickname, count(nickname) as np FROM rating limit 10");
$rows = array();
while($row = mysqli_fetch_assoc($query)) {
$rows[] = $row; }
$rowsjson = json_encode($rows, JSON_NUMERIC_CHECK);
echo $rowsjson;
// I'm using "numeric_check" option to avoid numbers to be formatted as strings
2)通过$.get
:
<script src="inc/jquery.js"></script>
<script type="text/javascript">
$.get("test.php", function(ris) {
var result = JSON.parse(ris);
var valori_array = [];
var nick_array = [];
var dati_array = [];
for (j = 0; j < 10; j++) {
// values_array[j] = parseFloat(result[j].np);
// first attempt (getting just numeric data): it works
data_array[j] = '["' + result[j].nicktrasf + '", ' + parseFloat(result[j].np) + ']';
// second attempt (getting the whole thing, Nicknames+Numbers array): it doesn't work
}
这部分有很多问题:
- 有没有办法可以直接使用JSON对象,而不必通过循环提取单个值?
- 这种格式的对象[{"nickname":"Name1","np":55},{"nickname":"Name1","np":20}]
可用于绘制需要其他格式数据的饼图:[["Name1",55],["Name2",20]]
??
3)使用Highcharts绘制饼图:
$('#container').highcharts({
title: {text: 'Pie Chart Test'},
series:
[{
type: 'pie',
name: "test",
// data: values_array // It works, It draws a pie without names
// data: [["Name1",55],["Name2",20]] // Manually, it works
// data: result // It doesn't work, obvoiusly
// data: ris // It doesn't work, obvoiusly
// data: [data_array] // It doesn't work
data: data_array // It doesn't work... why?
}] });
我哪里错了?我想我几乎尝试了所有的可能性而没有成功;当我回显它时,数组data_array
似乎是正确的格式(如果我尝试手动剪切并粘贴到我的代码中,数组的浏览器回显,它可以正常工作......)。
也许我需要将我的数组转换为字符串或类似的东西?
希望有人可以指出我的错误并告诉我正确的方法......
答案 0 :(得分:0)
对象和数组在JavaScript中密切相关,但Highcharts需要一个数组来处理绘图/可视化过程
您可以尝试向我们展示
的输出 <?php var_dump($data_array); ?>
?