Php 变量变为真时弹出警报
我使用ajax从php脚本接收一些变量。如果变量变为TRUE,我想运行JavaScript警报函数窗口。当用户确认警报时,我想将一个新值发送回另一个php,该php将更新sqlite中的一个表,报警函数将恢复正常 我的问题是,我使用setInterval每秒更新变量。这意味着我的警报窗口也会每秒弹出一次 有没有更好的办法 她是我的一些代码:Php 变量变为真时弹出警报,php,javascript,ajax,jquery,Php,Javascript,Ajax,Jquery,我使用ajax从php脚本接收一些变量。如果变量变为TRUE,我想运行JavaScript警报函数窗口。当用户确认警报时,我想将一个新值发送回另一个php,该php将更新sqlite中的一个表,报警函数将恢复正常 我的问题是,我使用setInterval每秒更新变量。这意味着我的警报窗口也会每秒弹出一次 有没有更好的办法 她是我的一些代码: <script type="text/javascript"> $.ajaxSetup({ cache: false }); setInte
<script type="text/javascript">
$.ajaxSetup({ cache: false });
setInterval(function(){
$.getJSON('statusdata.php',function(data) {
hops = data["add_hops"];
if (hops == 1)
{
add_hops();
}
});
}, 1000);
$.ajaxSetup({cache:false});
setInterval(函数(){
$.getJSON('statusdata.php',函数(数据){
跳数=数据[“添加跳数”];
如果(跳数==1)
{
添加_hops();
}
});
}, 1000);
以下是我的javascript:
<script type="text/javascript">
function add_hops()
{
startwindow=window.open("http://192.168.1.5/Birger/hops_alarm.html", "startwindow",
"location=1,
status=0,scrollbars=0,width=750px,hight=350px");
startwindow.moveTo(640,300);
}
</script>
函数add_hops()
{
startwindow=窗口。打开(“http://192.168.1.5/Birger/hops_alarm.html“,“startwindow”,
“位置=1,
状态=0,滚动条=0,宽度=750px,高度=350px“;
startwindow.moveTo(640300);
}
JavaScript不授权setInterval
本身正常工作。更不用说ajax了。ajax本质上是异步的。在ajaxsuccess
上使用回调来确定是否显示弹出窗口
当您发出过多ajax请求时,浏览器会将其排队。所以他们不能保证在1秒内结束
编辑
从评论中可以看出:
在ajax调用中使用call可以确保在ajax调用终止之前不会调用add_hops函数
谢谢。防止代码复制警报的最佳方法是将超时捕获到如下变量:
var myTimeout = setTimeout(function () {
// …
}, 1000);
现在您有了超时的引用,您可以使用以下行取消它:
if (myTimeout) clearTimeout(myTimeout);
要在函数中实现这一点,需要将clearTimeout行插入匿名函数,如下所示:
var hops = null;
var myTimeout = setInterval(function(){
if (hops == 1) {
clearTimeout(myTimeout);
return;
}
$.getJSON('statusdata.php',function(data) {
hops = data["add_hops"];
if (hops == 1) {
add_hops();
}
});
}, 1000);
将clearTimeout()调用添加到匿名函数而不是$.getJSON()调用,可以防止代码在laggy连接上执行不必要的AJAX请求
参考资料
您是否考虑过使用WebSocket而不是ajax?您可以尝试使用弹出窗口而不是alert Box。我尝试过使用弹出窗口,但由于我使用的变量是函数中的本地变量,因此它会每隔一秒运行一次弹出窗口。如果我能得到variabel全局变量,我想我可以解决这个问题。?+1,在ajax调用中使用call可以确保在ajax调用终止之前不会调用add_hops函数