Highcharts - 使用 MySQLi + JSON 获取和绘制数据(逐步)


Highcharts - Get and plot data with MySQLi + JSON (step by step)

我试图将一个简单的序列绘制成饼图;我的数据来自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) 使用高图绘制饼图:

$('#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似乎格式正确(如果我尝试手动将数组的浏览器回显剪切并粘贴到我的代码中,它可以正常工作......也许我需要将我的数组转换为字符串或类似的东西?希望有人能指出我的错误并告诉我正确的方法......

对象和数组在 JavaScript 中非常密切相关,但 Highcharts 需要一个数组来处理绘图/可视化过程

您能否尝试向我们展示输出

<?php var_dump($data_array); ?>