使用Ajax Correct Way刷新ChartJS(v2.6.0)中的Bar Char

时间:2017-07-29 07:04:10

标签: javascript jquery ajax charts

我正在刷新下拉列表的条形图。我只是想知道我是以正确的方式做到这一点。每当我用新的画布替换现有画布时,在我的代码中。 有没有更好的方法来实现同样的目标?

我的JS代码:

var chart_= function () {

    $('#canvas_id').replaceWith('<canvas id="canvas_id" style="height:280px"></canvas>');
    $.ajax({
        type: 'POST', //post method
        url: 'url', //ajaxformexample url
        dataType: "json",
        success: function (result, textStatus, jqXHR)
        {
            // GENERATE CHART DATA
            var labels = result.obj.map(function (e) {
                return e.label;
            });
            var data = result.obj.map(function (e) {
                return e.data;
            });
            new Chart($("#canvas_id"), {
                type: 'bar',
                options: options_object,
                data: {
                    labels: labels,
                    datasets: [
                        {
                            label: "",
                            backgroundColor: '#00c0ef',
                            data: data
                        }
                    ]
                }

            });

        }
    });
};

1 个答案:

答案 0 :(得分:4)

绝对是一些更好的方法,我一直在使用Chart.js进行一些实时更新图表,并且一个很好的方法来完成你想要的是声明一个图表,其中包含一些最初预定义的设置。

var chart = new Chart( canvas, {
          type: "bar",
          data: {}
          options: {}
}

这样,只要您需要更新图表,就可以访问现有图表。并将数据更新为您从ajax调用获得的数据,并使用chart.update()方法,以便您可以继续使用预先存在的画布

$.ajax({
    type: 'POST', //post method
    url: 'url', //ajaxformexample url
    dataType: "json",
    success: function (result, textStatus, jqXHR)
    {
        chart.data = result;
        chart.update();
    }
});

希望这有帮助!