Javascript 如何在chartjs上实现动态数据?

Javascript 如何在chartjs上实现动态数据?,javascript,json,charts,chart.js,Javascript,Json,Charts,Chart.js,我需要您的帮助来学习如何将数据从json文件动态地实现到Chartjs。我需要动态填充的字段是标签和数据 JSON File <<< [ { "EFICAZ_TAB_ITEM_ID":1, "EFICAZ_PERCENTS":99 }, { "EFICAZ_TAB_ITEM_ID":2, "EFICAZ_PERCENTS":99 }, { "EFICAZ_TAB_ITEM_ID":3,

我需要您的帮助来学习如何将数据从json文件动态地实现到Chartjs。我需要动态填充的字段是
标签
数据

JSON File <<<

[
   {
      "EFICAZ_TAB_ITEM_ID":1,
      "EFICAZ_PERCENTS":99
   },
   {
      "EFICAZ_TAB_ITEM_ID":2,
      "EFICAZ_PERCENTS":99
   },
   {
      "EFICAZ_TAB_ITEM_ID":3,
      "EFICAZ_PERCENTS":99
   }
]


CHARTJS <<<

var ctx = document.getElementById('myChart').getContext('2d');
var chart = new Chart(ctx, {
    // The type of chart we want to create
    type: 'line',

    // The data for our dataset
    data: {
        labels: [???],
        datasets: [{
            label: "My First dataset",
            backgroundColor: 'rgb(255, 99, 132)',
            borderColor: 'rgb(255, 99, 132)',
            data: [???],
        }]
    },

    // Configuration options go here
    options: {}
});
JSON文件我使用了
$.ajax()
获取JSON数据,并将数据保存在两个数组中,然后您可以将这些数组用于图表标签和数据。希望这有帮助

 var lbl = [];
    var dta = [];

    $.ajax({
      url: "test.json",
      dataType: 'json',
      async: false,
      success: function(data) {
        $.each(data, function(i, field){
             lbl.push(field.EFICAZ_TAB_ITEM_ID
    );
               dta.push(field.EFICAZ_PERCENTS);

           });
      }
    });


     $.getJSON("test.json", function(result){
           $.each(result, function(i, field){
             lbl.push(field.EFICAZ_TAB_ITEM_ID
    );
               dta.push(field.EFICAZ_PERCENTS);

           });
        });


    var ctx = document.getElementById("myCanvas").getContext('2d');



    var chart = new Chart(ctx, {
        // The type of chart we want to create
        type: 'line',

        // The data for our dataset
        data: {
            labels: lbl,
            datasets: [{
                label: "My First dataset",
                backgroundColor: 'rgb(255, 99, 132)',
                borderColor: 'rgb(255, 99, 132)',
                data: dta,
            }]
        },

        // Configuration options go here
        options: {}
    });
我使用
$.ajax()
获取JSON数据,并将数据保存在两个数组中,然后您可以将这些数组用于图表标签和数据。希望这有帮助

 var lbl = [];
    var dta = [];

    $.ajax({
      url: "test.json",
      dataType: 'json',
      async: false,
      success: function(data) {
        $.each(data, function(i, field){
             lbl.push(field.EFICAZ_TAB_ITEM_ID
    );
               dta.push(field.EFICAZ_PERCENTS);

           });
      }
    });


     $.getJSON("test.json", function(result){
           $.each(result, function(i, field){
             lbl.push(field.EFICAZ_TAB_ITEM_ID
    );
               dta.push(field.EFICAZ_PERCENTS);

           });
        });


    var ctx = document.getElementById("myCanvas").getContext('2d');



    var chart = new Chart(ctx, {
        // The type of chart we want to create
        type: 'line',

        // The data for our dataset
        data: {
            labels: lbl,
            datasets: [{
                label: "My First dataset",
                backgroundColor: 'rgb(255, 99, 132)',
                borderColor: 'rgb(255, 99, 132)',
                data: dta,
            }]
        },

        // Configuration options go here
        options: {}
    });
下面是一个例子

document.addEventListener('DOMContentLoaded',function(){
var图表数据=[
{
“EFICAZ_选项卡_项目_ID”:1,
“EFICAZ_百分比”:21
},
{
“EFICAZ_选项卡_项_ID”:2,
“EFICAZ_百分比”:55
},
{
“EFICAZ_选项卡_项目_ID”:3,
“EFICAZ_百分比”:32
}
]
var标签=[];
var值=[];
chartData.forEach(函数(el,键){
标签推送(el.EFICAZ_选项卡_项目_ID);
推力值(el.EFICAZ_百分比);
})
var ctx=document.getElementById('myChart').getContext('2d');
var图表=新图表(ctx{
//我们要创建的图表类型
键入:“行”,
//我们的数据集的数据
数据:{
标签:标签,
数据集:[{
标签:“我的第一个数据集”,
背景颜色:“rgb(255,99,132)”,
边框颜色:“rgb(255,99,132)”,
数据:价值观,
}]
},
//配置选项在这里
选项:{}
});
})

以下是示例

document.addEventListener('DOMContentLoaded',function(){
var图表数据=[
{
“EFICAZ_选项卡_项目_ID”:1,
“EFICAZ_百分比”:21
},
{
“EFICAZ_选项卡_项_ID”:2,
“EFICAZ_百分比”:55
},
{
“EFICAZ_选项卡_项目_ID”:3,
“EFICAZ_百分比”:32
}
]
var标签=[];
var值=[];
chartData.forEach(函数(el,键){
标签推送(el.EFICAZ_选项卡_项目_ID);
推力值(el.EFICAZ_百分比);
})
var ctx=document.getElementById('myChart').getContext('2d');
var图表=新图表(ctx{
//我们要创建的图表类型
键入:“行”,
//我们的数据集的数据
数据:{
标签:标签,
数据集:[{
标签:“我的第一个数据集”,
背景颜色:“rgb(255,99,132)”,
边框颜色:“rgb(255,99,132)”,
数据:价值观,
}]
},
//配置选项在这里
选项:{}
});
})


您需要从json中获取2个数组:1)标签数组2)值数组,然后必须将该数组设置为data.labels和data.dataset.data。如果不是图表的初始值,则必须使用对图表实例调用的update()方法更新图表。顺便说一句,您的问题与@Brissy类似吗?标签:ArrayLabel数据:ArrayData?您需要从json中获取2个数组:1)标签数组2)值数组,然后必须将该数组设置为data.labels和data.datasets.data。如果不是图表的初始值,则必须使用对图表实例调用的update()方法更新图表。顺便说一句,您的问题与@Brissy类似吗?标签:ArrayLabel数据:ArrayData?