【发布时间】:2014-12-07 21:58:23
【问题描述】:
我正在尝试使用 mysql 表中的 json 数据来使用 highcharts。我想设置一个下拉列表,其中的值将用作 mysql_query 的 WHERE 条件以获取所选数据并将它们填充到 highchart 中。 代码在静态条件下正常工作(没有下拉变量)。
main.html
<form method="get" action="" >
Chose :
<select name="liste" id="liste">
<option value="A" <? if($selected == 'A'){ echo 'selected="Choice A"';}?>Choice A</option>
<option value="B" <? if($selected == 'B'){ echo 'selected="Choice B"';}?>Choice B</option>
<option value="C" <? if($selected == 'C'){ echo 'selected="Choice C"';} ?>Choice C</option>
<option value="D" <? if($selected == 'D'){ echo 'selected="Choice D"';} ?>Choice D</option>
</select>
<input type="submit" value="Go" />
</form>
数据.php
`<?php
$A=$_GET['liste'];
$con = mysql_connect("localhost","myuser","mypwd");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);
$test = mysql_query("SELECT name FROM table1 WHERE table2.age LIKE '{$A}'");
$rowss = array();
while($rr = mysql_fetch_array($test)) {
$ro[0] = $rr[0];
$ro[1] = $rr[1];
array_push($rowss,$ro);
}
print json_encode($rowss, JSON_NUMERIC_CHECK);
mysql_close($con);
?>
在 main.html 文件中,我有调用 data.php 文件以获取 json 数据的 highchart 脚本。
<script>
$(document).ready(function() {
//rest of the code
$.getJSON("data.php", function(json) {
options.series[0].data = json;
chart = new Highcharts.Chart(options);
});
</script>
测试 data.php 根据选择的值给出正确的输出。所以我假设它工作正常。我的问题是在加载 main.html 时它会绘制一个空图,即使更改值时也会继续绘制空数据图。
注意:我知道 mysql_* 不再是最佳实践,并计划稍后切换到 mysqli_*。
编辑:
似乎我的 options.series[0] 选项 obj 没有创建,控制台显示空数据数组。使用 <form method="get" action="data.php" > 时,我得到了期望数组,但无法获取图表。
【问题讨论】:
-
options.series[0]你的选项 obj 已经创建了吗?你也试过 $.ajax 而不是 getJSON 吗?控制台是否有任何错误消息? -
$.ajax( url: data.php, data: queryOptions, dataType: 'json', success:function(json) { options.series[0].data = json; chart = new Highcharts.Chart(options); });对吗?不知道怎么用ajax!! -
我建议您从您的选择中删除 php 代码,然后通过 jquery 捕获事件(更改函数)。在此操作中调用 ajax,然后通过 series.update / series.setData 更新您的图表
-
我从选择中删除了 php 代码。我认为当 action="" 时变量不会发送到 data.php。
标签: javascript php mysql json highcharts