最近在做的这个项目要获取到后台的数据,然后使用html5绘制曲线,以前都是在自己电脑上使用没有发现有什么不正常的地方,昨天连接同事的服务器发现有段数据怎么都对不上了,开始我还以为程序有问题呢,找了半天结构发现是我的电脑时间和同事的电脑时间对不上导致的。既然发现了问题下面就是找出解决办法了。
实际上最好的解决办法是固定客户端的时间,不然修改,但你会发现这个不可能的。所以只有找其他方式的。再有就是获取服务器时间然后同步到客户端了。实际上这个游戏三种方式可行。
1、既然是动态获取就每秒获取一次,这样能完成需求但是会很大的增加服务器的压力。
2、获取玩一次后,然后在客户端进行更新,这个能保证在开始的时候获取到的数据时正确的,但是后期不能保证数据的正确性。
3、在开始的时候获取一次,以后每过分钟再获取一次,这样能很大程度上减少服务器的压力,也能很大程度上保证数据的正确性。
获取服务器时间:
/** * 获取服务器时间 */ function getServerTime() { <span style="white-space:pre"> </span>nowTime = new Date().getTime(); <span style="white-space:pre"> </span>$.ajax( <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>url : 'serverTime_getServerTime', type : 'GET', datatype : 'json', <span style="white-space:pre"> </span>success : function(data) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>/** <span style="white-space:pre"> </span> * 判断对应的键值是否有对应的数据 <span style="white-space:pre"> </span> */ <span style="white-space:pre"> </span>if (data) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>nowTime = data; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>}); <span style="white-space:pre"> </span>return nowTime; }
设置动态更新:
function setTime() { if (timeInterval != 60000) { timeInterval += 1000; nowTime += 1000; } else { nowTime = getServerTime(); timeInterval = 0; } $("#server_time").html( "服务器时间:" + new Date(nowTime).toString().substring(15, 24)); }
在页面加载的时候调用:
<span style="font-family: Arial, Helvetica, sans-serif;">window.onload = function()</span>
{ nowTime = getServerTime(); setInterval(setTime, 1000); };
这样就能实现时间的动态刷新,但又不至于频繁的到后台请求数据了。
时间: 2024-10-19 18:48:36