0

我无法弄清楚我的 Highchart 做错了什么。它应该读取一个 json 数组,(实际上只是一个日期和一个值并将其绘制到图表上。但是,我似乎无法得到任何点来绘制到图表上。我做错了什么?

php代码:

$statement = "select count(title) from node where title like 'WEN%'";
$result = mysql_query($statement);
while ($row = mysql_fetch_array($result)) {
   $data = $row['count(title)'];
}

$x = time() * 1000;
$y = $data;

$array = array($x,$y);

echo json_encode($array);

html/javascript 代码:

   <p>Chart</p>
    <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto">

     <script>
    function requestData() {
       jQuery.ajax({
            url: 'queryp.php',
            datatype: 'json',
            success: function(point)  {
                var series = chart.series[0];

                // add the point
                chart.series[0].addPoint(point, true);

                // call it again after one second
                setTimeout(requestData, 5000);    
            },
            cache: false
        });

    }

    </script>  

    <script type="text/javascript">

    jQuery(function () {
        jQuery(document).ready(function() {
            Highcharts.setOptions({
                global: {
                    useUTC: false
                }
            });

            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container',
                    type: 'spline',
                    marginRight: 10,
                    events: {
                        load: requestData

                    }
                },
                title: {
                    text: 'Live Query Data'
                },
                xAxis: {
                    type: 'datetime',
                    tickPixelInterval: 150
                },
                yAxis: {
                    title: {
                        text: 'Value'
                    },
                    plotLines: [{
                        value: 0,
                        width: 1,
                        color: '#808080'
                    }]
                },
                legend: {
                    enabled: true
                },
                exporting: {
                    enabled: false
                },
                series: [{
                    name: 'Query Data',
                    data: []
                }]
            });
        });

    });

    </script>

    </div> 
4

2 回答 2

0

您的series[0]对象没有名为的方法addPoint,您应该在控制台中看到它。

如果要附加到data数组,只需使用push

chart.series[0].data.push(point[1]);
于 2013-02-11T13:12:39.970 回答
0

问题是您正在引用尚未准备好的图表变量 - 您正在使用加载事件处理程序。使用这样的东西:

function requestData() {
    var series;
    if(chart.series[0]){
        /* all other cases load chart */
        series = chart.series[0];
    } else { 
        /* first load chart */
        series = this.series[0];
    }  
    jQuery.ajax({
        url: 'queryp.php',
        datatype: 'json',
        success: function(point)  {
            series.addPoint(point, true);
            setTimeout(requestData, 5000);   
         }
    });
}

此外,请确保值是数字。不是字符串。

于 2013-02-11T13:52:29.093 回答