chartjs如何动态更新数据库中的数据(Chartjs无法获取数据)

时间:2017-07-30 01:16:08

标签: javascript mysql ajax chart.js

我对chartjs非常陌生,并使用laravel完成当前项目。现在,我需要创建一个图表,需要自动更新而不刷新,数据来自mysql数据库。我在网上发现了这种代码:this question。我试过这个代码,输出总是让我失望。

   // used for example purposes
function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

// create initial empty chart
var ctx_live = document.getElementById("mycanvas");
var myChart = new Chart(ctx_live, {
  type: 'line',
  data: {
    labels: readingID,
    datasets: [{
      data: moist,
      borderWidth: 1,
      borderColor:'#00c0ef',
      label: 'liveCount',
    }]
  },
  options: {
    responsive: true,
    title: {
      display: true,
      text: "Chart.js - Dynamically Update Chart Via Ajax Requests",
    },
    legend: {
      display: false
    },
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true,
        }
      }]
    }
  }
});

// this post id drives the example data
var readingID = [];
var moist = [];

// logic to get new data
var getData = function() {
  $.ajax({
    url: "/soildata",
    type:"GET",
    success: function(data) {
         console.log(data);
        data = JSON.parse(data);


      // process your data to pull out what you plan to use to update the chart
      // e.g. new label and a new data point

      // add new label and data point to chart's underlying data structures
      myChart.data.labels.push("ReadingID " + readingID++);
      myChart.data.datasets[0].data.push(getRandomIntInclusive(1, 25)); <<<<<-----------I DONT KNOW HOW TO PLAY ON THIS PART I GUESS THIS PART CAN MAKE MY DATABASE WORKING

      // re-render the chart
      myChart.update();
    }
  });
};

// get new data every 3 seconds
setInterval(getData, 3000);

我想我需要在这个函数上做一些事情,这样我来自数据库的数据才能正常工作:  Chart.data.datasets [0] .data.push(getRandomIntInclusive(1,25));

任何人?..有没有人知道这个?..我是chartjs的新手,我真的花了数周的时间来解决,但我想我不能。我希望那里有人可以提供帮助,即使是不同的代码也会解决我的问题是高度接受的。感谢您采取的任何行动......

2 个答案:

答案 0 :(得分:0)

假设您从该ajax调用中获得的数据是好的,那么只需更换

即可
  myChart.data.datasets[0].data.push(getRandomIntInclusive(1, 25));

  myChart.data.datasets[0].data.push(data);

当然,这取决于该数据返回给您时的格式。

我建议一旦从ajax返回数据,就将console.log-ing这些数据,以确保它的格式适合chartjs

答案 1 :(得分:0)

比方说,moist = [50, 30] 和 JSON 响应的内容如下:

data{"id":"1" , "val":"20"}

要将 moist[50,30] 更新为 [1, 20]

myChart.data.datasets[0].data[0] = data.id;
myChart.data.datasets[1].data[1] = data.val;
myChart.update();