我正在使用setInterval来检测我从PLC(可编程逻辑控制器)获得的值,当它1
时,它会执行一个PHP页面,该页面将数据插入我的MYSQL数据库中。
因此,当我按住按钮超过 1 秒时,它会在其中多次设置 DB 值。
您可以在下面找到我的代码:
var Axo800RstBtn;
setInterval(function()
{
Axo800RstBtn = document.getElementById('Axo800BtnStatus').innerHTML;
var BatchUnits1 = document.getElementById('Axo800BatchProduction').innerHTML;
if(Axo800RstBtn == 1)
{
$.ajax({
method: "POST",
url: "SetBatchProductionInDB.php",
data: {
machineNumber: 1,
actualProduction: BatchUnits1
}
})
.done(function(msg)
{
console.log("Bericht: " + msg);
})
}
},1250);
有没有办法告诉我的页面它每 1 分钟只能执行一次? 某种块。或者也许是执行查询上的块?
这可以解决问题:
var Axo800RstBtn;
var hasBeenSet = false;
setInterval(function()
{
Axo800RstBtn = document.getElementById('Axo800BtnStatus').innerHTML;
var BatchUnits1 = document.getElementById('Axo800BatchProduction').innerHTML;
if(Axo800RstBtn == 1 && !hasBeenSet)
{
hasBeenSet = true;
$.ajax({
method: "POST",
url: "SetBatchProductionInDB.php",
data: {
machineNumber: 1,
actualProduction: BatchUnits1
}
})
.done(function(msg)
{
console.log("Bericht: " + msg);
})
}
},1250);
尽管我强烈建议您也这样做 控制服务器端. 也就是说,您可以通过在 PHP 中设置会话变量来跟踪正在调用的脚本。
此代码将阻止在请求发送一次后立即发送请求。如果您想在 60 秒后启用它,您可以在 hasBeenSet = true 之后添加;
hasBeenSet = true;
setTimeout(function(){ hasBeenSet = false}, 60000);