【发布时间】:2014-11-20 09:53:38
【问题描述】:
我正在尝试将一个简单的系列绘制成饼图;我的数据来自 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似乎是正确的格式(如果我尝试手动将数组的浏览器回显剪切并粘贴到我的代码中,它可以正常工作......)。
也许我需要将我的数组转换为字符串或类似的东西?
希望有人能指出我的错误并告诉我正确的方法......
【问题讨论】:
-
我也试过这个:
var data_test = "[" + data_array + "]";但它也不起作用。 data_test 是一个字符串,具有 Highcarts 饼图数据所需的 EXACT 结构...它应该工作... -
看起来您将带有“data_array”的搅拌推入php中的数组中。这是不正确的。您需要验证点/对象数组(我的意思是结构),这将是验证 json。
标签: javascript php json mysqli highcharts