我有一个jQuery自动刷新我的数据。我每隔60秒/ 1分钟运行一次。
setInterval(function()
{
//if every 60 seconds based on current time (count the rest of second from current time) then run the AJAX.
$.ajax(
{
url: "chkProfile.php",
type: "POST",
data:
{
},
dataType: "JSON",
success: function (jsonStr)
{
}
})
},60000);
现在我想要在任何时候手动刷新我的页面,示例I在12:20:40然后我们知道剩下的秒数是20然后运行AJAX。
目前如果我在12:20:40那么它会在12:21:40运行ajax
我想要的是,如果我在12:20:40然后它应该在12:21:00运行ajax
答案 0 :(得分:1)
简易解决方案:
如果必须运行0
ajax,您可以每秒检查一次。
试试这个:
setInterval(function()
{
var second = parseInt((new Date().getTime() / 1000) % 60);
if(second === 0) {
$.ajax({
url: "chkProfile.php",
type: "POST",
data:{},
dataType: "JSON",
success: function (jsonStr){}
});
}
},1000); // or less than 1 sec
优化解决方案:
首先计算下一分钟的秒数,并每60分钟设置一次间隔。
// define fetch data function
var fetchData = function(){
$.ajax({
url: "chkProfile.php",
type: "POST",
data:{},
dataType: "JSON",
success: function (jsonStr){}
});
}
// begin when dom is ready
$(document).ready(function(){
fetchData(); // run fetchData(); here if you want to ajax at first load time
// get remain time to next minute
var remainTime = 60 - parseInt((new Date().getTime() / 1000) % 60);
setTimeout(function(){
fetchData();
// redo every minute
setInterval(fetchData, 60000);
}, remainTime*1000)
})
没有ajax的代码段示例:
// define fetch data function
var fetchData = function() {
document.write(new Date())
}
// begin when dom is ready
$(document).ready(function() {
fetchData(); // run fetchData(); here if you want to ajax at first load time
// get remain time to next minute
var remainTime = 60 - parseInt((new Date().getTime() / 1000) % 60);
setTimeout(function() {
fetchData();
// redo every minute
setInterval(fetchData, 60000);
}, remainTime * 1000)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>