2

我在我的项目中使用了 highcharts库,我必须每 1 秒使用 PHP 文件创建的数据更新 Gauge。

highcharts Gauge Example 有一些代码让它每 1 秒触发一次,但我找不到像This Link这样的东西来使用 Ajax Technic 从 PHP 文件中获取数据。

任何人都知道实现这个场景并将 Ajax 应用于这个图表吗?

4

1 回答 1

1

您没有找到示例,因为它是通用的,请查看如何使用$.post()

http://jsfiddle.net/oceog/zpwdp/

$(function () {

    var chart = new Highcharts.Chart({

        chart: {
            renderTo: 'container',
            type: 'gauge',
            plotBackgroundColor: null,
            plotBackgroundImage: null,
            plotBorderWidth: 0,
            plotShadow: false
        },

        title: {
            text: 'Speedometer'
        },

        pane: {
            startAngle: -150,
            endAngle: 150,
            background: [{
                backgroundColor: {
                    linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                    stops: [
                        [0, '#FFF'],
                        [1, '#333']
                    ]
                },
                borderWidth: 0,
                outerRadius: '109%'
            }, {
                backgroundColor: {
                    linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                    stops: [
                        [0, '#333'],
                        [1, '#FFF']
                    ]
                },
                borderWidth: 1,
                outerRadius: '107%'
            }, {
                // default background
            }, {
                backgroundColor: '#DDD',
                borderWidth: 0,
                outerRadius: '105%',
                innerRadius: '103%'
            }]
        },

        // the value axis
        yAxis: {
            min: 0,
            max: 200,

            minorTickInterval: 'auto',
            minorTickWidth: 1,
            minorTickLength: 10,
            minorTickPosition: 'inside',
            minorTickColor: '#666',

            tickPixelInterval: 30,
            tickWidth: 2,
            tickPosition: 'inside',
            tickLength: 10,
            tickColor: '#666',
            labels: {
                step: 2,
                rotation: 'auto'
            },
            title: {
                text: 'km/h'
            },
            plotBands: [{
                from: 0,
                to: 120,
                color: '#55BF3B' // green
            }, {
                from: 120,
                to: 160,
                color: '#DDDF0D' // yellow
            }, {
                from: 160,
                to: 200,
                color: '#DF5353' // red
            }]        
        },

        series: [{
            name: 'Speed',
            data: [80],
            tooltip: {
                valueSuffix: ' km/h'
            }
        }]

    }, 
    // Add some life
    function (chart) {
        setInterval(function () {
            $.post('/echo/json/',{
                   json: JSON.stringify({
                   //This is just a sample data, see comments after code to real world usage
                   inc: Math.round((Math.random() - 0.5) * 20)
                   })},
            function(data) {
            var point = chart.series[0].points[0],
                newVal,
                inc = data.inc;

            newVal = point.y + inc;
            if (newVal < 0 || newVal > 200) {
                newVal = point.y - inc;
            }

            point.update(newVal);
        },"json");
        }, 3000);
      });
    });​

在现实世界中,您使用类似

$.post('new_data.php',{last_time: last_time},function(data) { 
   //set point here

},"json")

在 new_data.php 你做类似的事情

$data=get_data($last_time);
echo json_encode($data);
exit;
于 2012-12-01T12:10:53.900 回答