jQuery怎么获取服务器时间?

2025-04-28 15:46:56
推荐回答(4个)
回答1:

具体来说有这么几种思路吧:


  1. 轮询,就像你说的那样不间断的和服务器通信,比如每秒甚至更短就发起一次请求获取服务器时间,然后利用Ajax的readyState来确定从请求发起到收到回复过去的时间不会太长。

  2. WebSocket,利用WebSocket来实时通信。


服务器当然不会蹦掉……而且如果你要做的是一个倒计时那情况就更简单了,比如说在倒计时结束之前服务器对这些请求都不回复,让请求TimeOut,只有在倒计时结束后才回复给客户端,这样就能节省流量。


而且现在有很多这种免费的时间API服务。这里: www.timeapi.org/ 就是一个。这个API会直接返回UTC字符串。如果担心服务器压力的话用这种服务就好了。


另外,很重要的一点要提醒你。不论是什么数据,不论是不是从客户端上提取出来的,只要是在客户端上处理的就必须默认这个数据不可靠。不论你怎么从服务器获取时间,你都要认为这个时间很有可能已经被动过了。如果是抽奖这样的任务的话必须全程在服务器上处理。客户端代码关于数据的功能只有两个:向用户显示数据,从用户提取数据。

回答2:

通过执行ajax方式返回服务器时间

*/
$(document).ready(function (){
var url="/ajax/comm.shtml?action=getTime";
jQuery.ajax(url,{
data: "",
dataType: "json",
cache: false,
success: function(req){
callbackTime(req);
},
error: function(msg){
alert("ERROR:请刷新页面!");
}
});
$("#but1").click(function(){jqueryTest();});
});

var srv_nowtime;
function callbackTime(req){
var timeArr = req.split("&");
srv_nowtime = new Date(timeArr[0]).getTime();

showTime();

window.setInterval(showTime, 1000);
}

function showTime(){
srv_nowtime += 1000;
var nowtime = new Date(srv_nowtime);
var ymd = nowtime.getFullYear() + ""+ (nowtime.getMonth()+1) +""+ (nowtime.getDate()<10?"0"+nowtime.getDate():nowtime.getDate());
//alert(ymd);

}

执行之后就会显示服务器时间

回答3:

你的思路已经很清楚了呀,第一次请求的时候客户端记住服务器时间,后面客户端通过setInterval方法在指定时间间隔对时间进行增加,至于客户端时间对象的增加方法javascript本身没有提供相应的函数吧,不过自己写也不难,或者查一下jquery有没有可调用的方法

回答4:

分两种情况:
1.如果前台页面使用动态页面开发的,比如你是jsp开发的页面,在页面中嵌入的java代码
<%
Date d = new Date();
%>
2.如果前台是静态页面开发的,比如html,则在js编写一个计时器
ajax在第一次加载后使用ajax返回一个服务器的时间v_time,
然后你对这个v_time时间进行每秒计时累加一次,可以参考如下方法:
http://tlk20071.iteye.com/blog/1464263