Highcharts Dynami c обновление данных не удается - PullRequest
0 голосов
/ 17 апреля 2020

Попытка создать диаграмму, подобную этому . Без динамических данных c это работает как шарм. Попытка сделать данные динамическими c с помощью функции ajax -call и setInterval не столь успешна. Я просмотрел много постов и перепробовал несколько вариантов безрезультатно. Мой код, как есть, между <head> и </head>:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(function () {
$('#powerChart').highcharts({
    chart: {
        type: 'solidgauge'
    },

    credits: {
        enabled: false
    },

    exporting: {
        enabled: false
    },

    title: {
        text: 'Power'
    },

    pane: {
        startAngle: -90,
        endAngle: 90,
        background: [{ // Track for Move
            outerRadius: '112%',
            innerRadius: '88%',
            backgroundColor: Highcharts.color(Highcharts.getOptions().colors[0])
                .setOpacity(0.3)
                .get(),
            borderWidth: 0,
            shape: 'arc'
        }]
    },

    yAxis: {
        min: 0,
        max: 1500,
        lineWidth: 0,
        tickPositions: []
    },

    plotOptions: {
        solidgauge: {
            dataLabels: {
                enabled: false
            },
            linecap: 'round',
            stickyTracking: false,
            rounded: true
        }
    },

    series: [{
        name: 'Power',
        data: [{
            color: Highcharts.getOptions().colors[0],
            radius: '112%',
            innerRadius: '88%'
        }]
    }]
});

var chart = $('#powerChart').highcharts();
var pac;

function reqData() {
  $.ajax({
        type: "GET",
        url: "gegevens.php",
        dataType: "JSON",
        cache: "false",
        success: function(data){
          pac = data[0].pac,
          chart.series[0].update({ data: pac })
        }
    });

chart.redraw();

};

setInterval(reqData, 5000);


});

</script>

и между <body> и </body>:

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script src="https://code.highcharts.com/modules/solid-gauge.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
<p><div id="powerChart" style="width: 300px; height: 200px"></div></P>

In консоль, я получаю сообщение об ошибке, указывающее на highcharts.sr c. js: 30511, и это говорит: TypeError: undefined is not a function (near '...b.forEach...'). Я должен сделать что-то не так, но что? Я точно знаю, что мой ajax -звук работает и pac заполнен числом от data[0].pac.

1 Ответ

1 голос
/ 17 апреля 2020

Я не уверен, как выглядят извлеченные данные, но это должен быть массив объектов с заданным значением y или массив со значением.

Демонстрация, которая может быть полезна: https://jsfiddle.net/BlackLabel/L01hk5w3/

chart.series[0].update({
  data: [Math.random() * 1000]
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...