javascript - Chartjs如何从数据库动态更新数据(Chartjs无法获取数据)

标签 javascript mysql ajax chart.js

我对 Chartjs 非常陌生,并且使用 Laravel 来完成当前的项目。现在,我需要创建一个图表,需要自动更新,无需刷新,数据来自mysql数据库。我在网上找到了这样的代码:https://codepen.io/jordanwillis/pen/bqaGRR 。我尝试执行此代码,但输出总是让我失败。

   // 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 的新手,确实我花了几周的时间来解决,但我想我不能。我希望有人能提供帮助,即使是不同的代码解决我的问题被高度接受。感谢您将采取的任何行动..

最佳答案

假设您从 ajax 调用返回的数据很好,您只需替换

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

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

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

我建议在数据从 ajax 返回后进行 console.log-ing,以确保其格式适合 Chartjs

关于javascript - Chartjs如何从数据库动态更新数据(Chartjs无法获取数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395483/

相关文章:

php - 数据库查询失败 您的 SQL 语法有误;

php - 使用 PHP 变量打印 SELECT FROM WHERE 结果时出错

javascript - 将函数的变量定义给另一个函数

javascript - 如何从异步调用返回响应?

javascript - ajax 按顺序加载 2 个 XML 文档,无需异步 :false

javascript - 如何使用 MomentJS 查找两个 Unix 日期(以天为单位)之间的确切持续时间?

javascript - 通过比较两个输入字段中的值启用/禁用元素

javascript - 如何在 facebook 中建立按钮注册?

JavaScript:元素 style.display = 'block' 不起作用

javascript - 使用 jQuery $.ajax 调用另一个控件的操作