График Highchart датчик с данными JSON
как построить датчик highchart с данными JSON?
Я работаю над highchart gauge, у меня есть успехи в показе последних данных из базы данных. Я использовал JavaScriptSerializer для этого 
код..
  <script type="text/javascript">
    $(function () {
    var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'gauge',
            plotBackgroundColor: null,
            plotBackgroundImage: null,
            plotBorderWidth: 0,
            plotShadow: false
        }, 
//Other char parameter comes here
}
   function (chart) {
            setInterval(function () {
                $.getJSON("S14.aspx", function (data, textStatus) {
                    console.log(data);
                    $.each(data, function (index, wind) {
                        var point = chart.series[0].points[0],
                        newVal = wind;
                        point.update(newVal);
                    });
                });
            }, 3000);
        });
код для JSON
public string chartData1
    {
        get;
        set;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        List<double> _data = new List<double>();
        GetData();
        foreach (DataRow row in dt.Rows)
        {
            _data.Add((double)Convert.ToDouble(row["S11"]));
        }
        JavaScriptSerializer jss = new JavaScriptSerializer();
        chartData1 = jss.Serialize(_data);
    }
мой JSON выглядит как
[1387204961992.4268,72]
Ну проблема в том, что циферблат датчика не движется в соответствии с последними значениями, которые мне нужно обновить страницу для что. Я знаю, что это происходит потому, что GetData функция выполняется только один раз. Я застрял здесь.
как получить перемещение набора в соответствии с последними обновлениями значений в базе данных?
3 ответов
попробуйте разместить эту часть кода
setInterval(function() {
    $(function() {
    $.getJSON('S12.aspx', function(data) {
        $.each(data, function(val) {
        if (val !== null)
        {
        var point = chart.series[0].points[0];
            point.update(val);
        }
        });
    });
    })
},2000)
внутри диаграммы обратного вызова, как здесь:http://www.highcharts.com/demo/gauge-speedometer
Если вы получаете какие-либо ошибки,пожалуйста, прикрепите.
Я думаю, что есть ошибка или что-то в visual studio 2012 . Я просто вставляю весь код на новый aspx страница это работает. Я ничего не сделал, я просто вставил код на другую страницу.
<script type="text/javascript">
        $(function () {
            $('#container1').highcharts({
                chart: {
                    type: 'gauge',
                    alignTicks: false,
                    plotBackgroundColor: null,
                    plotBackgroundImage: null,
                    plotBorderWidth: 0,
                    plotShadow: false
                },
                title: {
                    text: 'Pressure Meter'
                },
                pane: {
                    startAngle: -150,
                    endAngle: 150
                },
                yAxis: [{
                    min: 0,
                    max: 1000,
                    lineColor: '#339',
                    tickColor: '#339',
                    minorTickColor: '#339',
                    offset: -25,
                    lineWidth: 2,
                    labels: {
                        distance: -20,
                        rotation: 'auto'
                    },
                    tickLength: 5,
                    minorTickLength: 5,
                    endOnTick: false
                }, {
                    min: 0,
                    max: 1000,
                    tickPosition: 'outside',
                    lineColor: '#933',
                    lineWidth: 2,
                    minorTickPosition: 'outside',
                    tickColor: '#933',
                    minorTickColor: '#933',
                    tickLength: 5,
                    minorTickLength: 5,
                    labels: {
                        distance: 12,
                        rotation: 'auto'
                    },
                    offset: -20,
                    endOnTick: false
                }],
                series: [{
                    name: 'Pressure',
                    data: [80],
                    dataLabels: {
                        formatter: function () {
                            var psi = this.y,
                                bar = Math.round(psi / 14.50);
                            return '<span style="color:#339">' + psi + ' psi</span><br/>' +
                                '<span style="color:#933">' + bar + ' bar</span>';
                        },
                        backgroundColor: {
                            linearGradient: {
                                x1: 0,
                                y1: 0,
                                x2: 0,
                                y2: 1
                            },
                            stops: [
                                [0, '#DDD'],
                                [1, '#FFF']
                            ]
                        }
                    },
                    tooltip: {
                        valueSuffix: ' psi'
                    }
                }]
            },
        // Add some life
        function (chart) {
            setInterval(function () {
                $.getJSON("S12.aspx", function (data, textStatus) {
                    $.each(data, function (index, wind) {
                        var point = chart.series[0].points[0],
                        newVal = wind;
                        point.update(newVal);
                    });
                });
            }, 3000);
        });
        });
    </script>
для обновления диаграммы браузер каким-то образом должен запросить последние данные с сервера. Есть два способа сделать это:
- обновление страницы - вся страница извлекается снова, с последними данными.
- запрос Ajax. Это делает запрос только для данных, без повторной загрузки всей страницы.
Я полагаю, вы хотели бы обновить графику без перезагрузки всей страницы. Для того чтобы это сделать, нужно найти о создании ajax-запросов с помощью jquery.
сайт highcharts имеет некоторые ресурсы, которые помогут вам (например,http://www.highcharts.com/docs/working-with-data/preprocessing-live-data). Вам нужно узнать, как сделать вызов ajax в javascript и использовать возвращенные данные для обновления диаграммы. Вам также нужно будет написать серверную часть, которая возвращает данные ajax. Пример приведен в php, но он должен быть довольно прямым, чтобы сделать что - то подобное в asp.net.
