需要帮助使用jQuery和javascript创建实时可更新计时器吗
好几天来,我一直在stack overflow和其他编程网站/论坛上讨论不同的问题,但我找不到问题的答案 基本上,我想做的是创建一个计时器,可以由另一个网页实时更新 由于服务器的限制,我不得不使用jQuery、javascript和PHP来实现这一点,我不能使用任何更高级的语言 在我的代码中有一些东西需要上交,我无法克服这个问题 下面我将发布整个前端代码 有人能告诉我为什么我的代码不起作用吗需要帮助使用jQuery和javascript创建实时可更新计时器吗,javascript,php,jquery,html,Javascript,Php,Jquery,Html,好几天来,我一直在stack overflow和其他编程网站/论坛上讨论不同的问题,但我找不到问题的答案 基本上,我想做的是创建一个计时器,可以由另一个网页实时更新 由于服务器的限制,我不得不使用jQuery、javascript和PHP来实现这一点,我不能使用任何更高级的语言 在我的代码中有一些东西需要上交,我无法克服这个问题 下面我将发布整个前端代码 有人能告诉我为什么我的代码不起作用吗 var firstTimer=10; var x=10; jQuery.ajax({ 数据类型:“js
var firstTimer=10;
var x=10;
jQuery.ajax({
数据类型:“json”,
键入:“GET”,
url:“myapi.php”,
数据:“,
成功:功能(数据){
firstTimer=data.minuti;
x=data.minuti;
}
});
功能启动计时器(持续时间、显示){
var定时器=持续时间,分钟,秒;
setInterval(函数(){
分钟=parseInt(计时器/60,10)
秒=parseInt(计时器%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=分钟+“:”+秒;
jQuery.ajax({
数据类型:“json”,
键入:“GET”,
url:“myapi.php”,
数据:“,
成功:功能(数据){
x=data.minuti;
}
});
if(firstTimer!=x){
位置。重新加载(true);
}
如果(--定时器<0){
警报(“时间到期”);
}
}, 1000);
}
window.onload=函数(){
jQuery.ajax({
数据类型:“json”,
键入:“GET”,
url:“myapi.php”,
数据:“,
成功:功能(数据){
firstTimer=data.minuti;
x=data.minuti;
}
});
minuti=数字(第一个计时器);
五分钟=60*分钟,
display=document.querySelector(“#time”);
startTimer(五分钟,显示);
};代码>
从外观上看,您似乎已经遇到了异步的辉煌奇迹。您的代码的结构就像是以顺序的方式从上到下运行一样,但是,由于您使用异步请求,情况并非如此。关于这件事,请参考更多的,嗯,雄辩的解释
简而言之:对$.ajax()
调用的回调将在周围的代码之后运行,包括它们后面的行。这意味着minuti=Number(firstTimer)代码>在窗口中。在服务器设置minuti
之前,实际执行onload
处理程序。确保只有在异步调用完成后才执行所有代码也可以解决您的NaN
问题。您可以在不同的地方进行几个控制台.log
调用,以实际掌握所用变量的当前值。请告诉我们代码所在的文件名以及timerapi.php的内容。您必须提供关于工作流程和所使用的var名称的详细说明。乍一看,您希望下面的代码行能够正确使用ajax结果。但事实并非如此。如果ajax运行,则可以/将在ajax请求返回任何结果之前执行它后面的下一个代码行。因此,以下代码行必须移到success
回调中。感谢您的快速回复,当我理解了我必须做的简单事情后,真的让我克服了所有的问题。