ajax动态显示服务器时间

我想用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);

但是这样页面会卡,而且得到的时间不准确。有更好的方法来实现吗?

阅读 5.5k
3 个回答

亲,我可以只给你思路么?当然,如果你看过了之后还想要代码,那再说。

我理解你的需求,但是这样做是肯定不行的,而且你既然都已经来提问了,肯定也意识到了。

你可以这样做:

  1. 请求回当前服务器时间

  2. 每隔1000ms本地刷新时间(如果只是精确到的话)

  3. 从之前从服务器请求时间开始计算,10分钟半小时1小时或者你自己选个合适的时间间隔,然后再去向服务器请求当前服务器时间,以修正时间误差

这里有个点你也需要考虑进去,如果有必要的话。那就是,向服务器请求,再到服务器获取当前时间,然后到浏览器获得响应这几个时间点之间的关系。

希望可以帮到你 :P

你只需要ajax请求一次服务器时间就行了,后面就交给客户端js处理显示了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题