我想用AJAX无刷新动态更新服务器时间,核心代码如下:
$.ajax({
success: function(result, status, xhr) {
var date = new Date(xhr.getResponseHeader("Date"));
var second = date.getSeconds();
$('p').text(second);
}
});
我想到的是通过setTimeout()
或setInterval()
来实现:
function change() {
$.ajax({
success: function(result, status, xhr) {
var date = new Date(xhr.getResponseHeader("Date"));
var second = date.getSeconds();
$('p').text(second);
}
});
}
setInterval(change, 1000);
但是这样页面会卡,而且得到的时间不准确。有更好的方法来实现吗?
亲,我可以只给你思路么?当然,如果你看过了之后还想要代码,那再说。
我理解你的需求,但是这样做是肯定不行的,而且你既然都已经来提问了,肯定也意识到了。
你可以这样做:
请求回
当前服务器时间
每隔
1000ms
本地刷新时间(如果只是精确到秒
的话)从之前从服务器请求时间开始计算,
10分钟
、半小时
、1小时
或者你自己选个合适的时间间隔,然后再去向服务器请求当前服务器时间
,以修正时间误差这里有个点你也需要考虑进去,如果有必要的话。那就是,向服务器
请求
,再到服务器获取当前时间
,然后到浏览器获得响应
这几个时间点之间的关系。希望可以帮到你
:P