我正在使用setInterval来检测从PLC(可编程逻辑控制器)获取的值。当它1
时,它执行一个在我的MYSQL数据库中插入数据的PHP页面。
因此,当我按住我的按钮超过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分钟只能执行一次?某种阻止。或者可能是执行查询的一个块?
答案 0 :(得分:1)
这可以解决问题:
CREATE TABLE IF NOT EXISTS $TABLE ...
虽然我强烈建议你也做这个控制服务器端。 I.E.您可以通过在PHP中设置会话变量来跟踪被调用的脚本。
此代码将阻止在请求发送一次后立即发送请求。如果要在60秒后启用它,可以在hasBeenSet = true;
之后添加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);