使用$ .getJSON将数据从数据库放入highcharts

时间:2013-06-11 07:05:17

标签: highcharts

我在使用$ .getJSON时遇到了一些问题,我真的需要一些帮助,因为我不知道如何解决这个问题,而且我已经被困在这里好几天了。这是在HTML中选择选择选项时应生成高级图表的js文件:

$(document).ready(function() {
$("#paese").change(function(){
  var seriesOptions = [];
$.getJSON("prova.php", function(data) {
    seriesOptions = data;
});
var chart1 = new Highcharts.Chart({
chart: {
   renderTo: 'container',
   type: 'column',
   spacingLeft: 20,
   borderWidth: 1
},
....
series: [{
   name: 'Italia',
   data: seriesOptions
}],

第一部分有什么不对吗?当我选择一个选项时,似乎highcharts没有得到php文件,但我很确定它是正确的,这里是(PHP文件):

<?PHP 
header("Content-Type: application/json; charset=UTF-8");
$conn = mysql_connect("localhost", "root");
$paese = null;
if(isset($_GET['paese'])) $paese = $_GET['paese'];
$ok = mysql_select_db("liberta", $conn);
$response = array();
$sql="SELECT `valori`.Punteggio FROM `valori` INNER JOIN `nazioni` ON `valori`.Nazione
= `nazioni`.ID WHERE `nazioni`.Nome = '$paese'";
$res=mysql_query($sql);
while($record=mysql_fetch_row($res)){
$response[] = intval("$record[0]");
}
mysql_close($conn);
print(json_encode($response));

我正在尝试从我使用PHPmyadmin创建的数据库中获取数据并将它们直接放入highcharts中,但它不起作用。如果你能帮助我,我会很高兴,因为这是我必须参加的考试。非常感谢你。

2 个答案:

答案 0 :(得分:0)

我建议熟悉有关预处理数据http://docs.highcharts.com/#preprocessing的文章。

您需要具有以下结构:

{
     data:[1,2,3]
}

尝试替换

while($record=mysql_fetch_row($res)){
      $response[] = intval("$record[0]");
}

while($record=mysql_fetch_row($res)){
      $response['data'][] = intval($record[0]);
}

答案 1 :(得分:0)

你的问题在于javascript部分。当您调用$ .getJSON时,您提供的回调将在服务器响应时异步调用。您的代码中的Howether是以同步方式立即调用Highcharts()构造函数。在它被称为seriesOption变量的点仍然等于[]。尝试从回调中调用构造函数,如下所示:

$.getJSON("prova.php", function(data) {
    var chart1 = new Highcharts.Chart(....
           series: [{
              name: 'Italia',
              data: data}])});