我正在我的网页上使用SCADA系统,并且仅当mysql数据库中的两个表中的任何一个发生更改时,才希望使用gif刷新某些div。
我也想在每次更改发生时执行此操作(表中的新记录)。 当这两个表保持不变时,不应执行任何操作(没有新记录)。
整个网页都是php / html,这是我使用javascript / ajax的第一种方法。 我尝试使用:
setInterval($('. examplediv).load(location.href + ' .examplediv), 1000);
但它不符合我的需求。当我的图形应该是静态的时,它会随着每次刷新而闪烁。 为简化起见:我只想在表中的状态从a-> b更改时重新加载它们,因此我将a.gif与b.gif交换。
我可以通过以下方式检测mysql表中的更改:记录ID,时间戳或表校验和,但是使用JavaScript会很费劲。
<div class="refresh"> // div i want to refresh
<h3>PIR</h3> // sensor name
<p>Online: <?echo $aonline;?></p> // echoing result of query if sensor is online
<p>State: <?echo $pirstan;?></p> // echoing current state of sensor
<p>Last changed: <?echo $rowpir['Czas'];?></p> //echoing timestamp of previous state of sensor
<img class="center" src="pir.gif" alt="Kontrakton"> // showing image related to current sensor state (for example walking person to PIR sensor)
</div>
任何有关上述问题的帮助将不胜感激。 特别是带有注释的示例代码,这样我就明白了。 也欢迎使用其他解决问题的方法,也许我是短视的。
答案 0 :(得分:0)
您可以使用websocket或socket.io解决您的问题示例:
当客户获得信息时 您可以直接拨打Ajax电话
socket.on('notification', function(){
ajaxFunction();
});
如果您不想使用此方法。 p / s这只是一个建议。进行验证以获取旧的行数据,并在后端中比较新的行数据。
通过js
<script>
var old_count = 0;
setInterval(function(){
$.ajax({
type : "POST",
url : "test.php",
success : function(data){
if (data > old_count) {
alert('new record on i_case');
old_count = data;
}
}
});
},1000);
</script>
答案 1 :(得分:0)
对于那些对未来感兴趣的人,请提供以下代码:Fiido93
<script type="text/javascript">
var old_count = 0;
setInterval(function(){
$.ajax({
type : "POST",
url : "test.php",
success : function(data){
if (data > old_count) {
$('.divname' ).load(window.location.href + ' .divname');
old_count = data;
}
}
});
},1000);
和test.php
$result = mysqli_query($conn,"mysqlquery");
while($row = mysqli_fetch_array($result))
{
$printme= $row[0]; // i only echo row 0 here !!
}
echo "$printme";