ChartJS图表在添加新数据后出现错误

问题描述 投票:0回答:1

实际上,在我的网站上,我使用来自MySQL数据库的一些数据来构建字符。

每次按下图表按钮时,都会出现一个模式,AJAX调用将被发送到服务器,然后将绘制图表。

问题是,在将新数据添加到数据库并通过移动鼠标以打开ChartJS的模式后,ChartJS在带有新数据的图表和旧数据之间的图表之间倾斜。

enter image description here

这里是代码

var chart;

$(function () {
    renderChart();
});


function renderChart() {
    var ctx = document.getElementById('barchart').getContext('2d');
    var gradient = ctx.createLinearGradient(0, 0, 0, 400);
    gradient.addColorStop(0, '#007AFD');
    gradient.addColorStop(1, '#00B1FF');
    var options = {
        legend: false,
        maintainAspectRatio: false,
        tooltips: {
            displayColors: false
        },
        scales: {
            xAxes: [{
                gridLines: {
                    display: false,
                },
                barPercentage: 0.3,
            }],
            yAxes: [{
                ticks: {
                    stacked: true,
                    stepSize: 1,
                    beginAtZero: true,
                },
                gridLines: {
                    borderDash: [5, 15],
                    drawBorder: false
                }
            }]
        }
    };
    chart = new Chart(ctx, { type: 'bar', labels: [], data: [] });
}

function loadReports(data) {
    $.ajax({
        type: "POST",
        url: "Default.aspx/getReports",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({ data: data }),
        dataType: "json",
        success: function (r) {
            data = r.d;
            if (data != '[]') {
                data = jQuery.parseJSON(data);
                chart.data.labels = data.map(ora => ora.ORARIO);
                chart.data.datasets[0].data[0] = data.map(cop => cop.COPERTI);
                chart.update();
            } else {
                chart.data.labels = [];
                chart.data.datasets[0].data = [];
                chart.update();
            }

        },
        error: function (error) {
            alert(error.responseText);
        }
    });

}

在加载时调用buildChart(),并在JS文件顶部声明图表

javascript jquery chart.js
1个回答
2
投票
function addData(chart, label, data) { chart.data.labels.push(label); chart.data.datasets.forEach((dataset) => { dataset.data.push(data); }); chart.update(); } function removeData(chart) { chart.data.labels.pop(); chart.data.datasets.forEach((dataset) => { dataset.data.pop(); }); chart.update(); }

文档:https://www.chartjs.org/docs/latest/developers/updates.html

您可以使用以下代码尝试:

$.ajax({ type: "POST", url: "Default.aspx/getReports", contentType: "application/json; charset=utf-8", data: JSON.stringify({ data: data }), dataType: "json", success: function(r) { data = r.d; if (data != "[]") { data = jQuery.parseJSON(data); chart.data.labels = data.map(ora => ora.ORARIO); chart.data.datasets[0].data = data.map(coperti => coperti.COPERTI); chart.update(); } else { chart.data.labels = []; chart.data.datasets[0].data = []; chart.update(); } $("#modalChart").modal("show"); }, error: function(error) { alert(error.responseText); } });

© www.soinside.com 2019 - 2024. All rights reserved.