ChartJS 上的 XMLHTTPRequest 重复条目

发布于 2025-01-11 09:42:07 字数 836 浏览 0 评论 0原文

我正在使用 XMLHTTPRequest 从 PHP 文件接收数据。 PHP 文件将回显一个数字,例如 6,XMLHTTPRequest 将抓取它。这是使图表变得生动的尝试。

我遇到的问题与 ChartJS 和这些请求有关。

var Data;

function loadXMLDOC() {
var request = new XMLHttpRequest(); // create http request
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
Data = this.responseText;

  myChart.data.labels.push(" ");
  myChart.data.datasets[0].data.push(Data);

  // re-render the chart
  myChart.update();
  }
}
request.open('GET', "data.php", true);
request.send(); // send the request
}
setInterval(function(){
   loadXMLDOC();
}, 1000)

window.onload = loadXMLDoc;

当我从数据库中获取这些数字时,我只需要该数字一次。但是,它会多次重复该数字,而不是一次。 ChartJS 上重复的数字 我想知道如何只获取一次号码,并且在下一个号码到来之前不会重复多次?

I'm using an XMLHTTPRequest to receive data from a PHP file. The PHP file will echo at a number, say 6, and the XMLHTTPRequest will grab it. This is an attempt to make the graph live.

The problem I'm having relates to ChartJS and these requests.

var Data;

function loadXMLDOC() {
var request = new XMLHttpRequest(); // create http request
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
Data = this.responseText;

  myChart.data.labels.push(" ");
  myChart.data.datasets[0].data.push(Data);

  // re-render the chart
  myChart.update();
  }
}
request.open('GET', "data.php", true);
request.send(); // send the request
}
setInterval(function(){
   loadXMLDOC();
}, 1000)

window.onload = loadXMLDoc;

As I'm grabbing these numbers from a database, I only need the number once. However, it will repeat the number multiple times, not once.
Numbers Repeating on ChartJS
I was wondering how I would only get the number once and have it not repeat multiple times till the next number comes in?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染柒℉ 2025-01-18 09:42:07

正如曼努埃尔建议的,您可以检查最新添加的号码是否与您要添加的号码相同。如果是这种情况,请不要添加它。这样做的副作用是,如果下一个数字实际上与上一个数字相同,则也不会被添加。要实现此目的,您可以将您的功能更改为:

if (request.readyState == 4 && request.status == 200) {
    Data = this.responseText;
    const chartData = myChart.data.datasets[0].data;

    if (chartData[chartData.length - 1] === Data) {
        return;
    }

    myChart.data.labels.push(" ");
    myChart.data.datasets[0].data.push(Data);

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

另一种选择是让 PhP 不发送号码(如果已经发送)。

As Manuel suggested you can check if the latest number added is the same number as you want to add. If this is the case dont add it. Side effect from this is, if the next number is actually the same number as the last one it also wont be added. To achieve this you can change your function to this:

if (request.readyState == 4 && request.status == 200) {
    Data = this.responseText;
    const chartData = myChart.data.datasets[0].data;

    if (chartData[chartData.length - 1] === Data) {
        return;
    }

    myChart.data.labels.push(" ");
    myChart.data.datasets[0].data.push(Data);

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

Another option is to let PhP not send the number if it already has been sent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文