
jQuery怎么获取服务器时间?
看到有些web上面的时间是实时刷新的,后来也搜索了一下,确实脚本语言可以通过函数办到。但是脚本语言是运行在客户端的,即获取的时间不一定准确,有可能是用户改过的,这对于限时...
看到有些web上面的时间是实时刷新的,后来也搜索了一下,确实脚本语言可以通过函数办到。但是脚本语言是运行在客户端的,即获取的时间不一定准确,有可能是用户改过的,这对于限时做活动的商业网站来说是致命的(如淘宝,小米倒计时抢购)。服务器通过ajax异步提交当然可以得到准确时间,但是如果每秒提交一次,服务器岂不是蹦掉了?有没有这样的思路,web页面加载的时候向服务器提交一次请求得到准确时间,之后就交给客户端的脚本语言每秒给这个时间自动增加?如果可能,求大神发个代码。
展开
展开全部
具体来说有这么几种思路吧:
轮询,就像你说的那样不间断的和服务器通信,比如每秒甚至更短就发起一次请求获取服务器时间,然后利用Ajax的readyState来确定从请求发起到收到回复过去的时间不会太长。
WebSocket,利用WebSocket来实时通信。
服务器当然不会蹦掉……而且如果你要做的是一个倒计时那情况就更简单了,比如说在倒计时结束之前服务器对这些请求都不回复,让请求TimeOut,只有在倒计时结束后才回复给客户端,这样就能节省流量。
而且现在有很多这种免费的时间API服务。这里: www.timeapi.org/ 就是一个。这个API会直接返回UTC字符串。如果担心服务器压力的话用这种服务就好了。
另外,很重要的一点要提醒你。不论是什么数据,不论是不是从客户端上提取出来的,只要是在客户端上处理的就必须默认这个数据不可靠。不论你怎么从服务器获取时间,你都要认为这个时间很有可能已经被动过了。如果是抽奖这样的任务的话必须全程在服务器上处理。客户端代码关于数据的功能只有两个:向用户显示数据,从用户提取数据。

2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企...
点击进入详情页
本回答由Storm代理提供
展开全部
通过执行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);
}
执行之后就会显示服务器时间
*/
$(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);
}
执行之后就会显示服务器时间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的思路已经很清楚了呀,第一次请求的时候客户端记住服务器时间,后面客户端通过setInterval方法在指定时间间隔对时间进行增加,至于客户端时间对象的增加方法javascript本身没有提供相应的函数吧,不过自己写也不难,或者查一下jquery有没有可调用的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分两种情况:
1.如果前台页面使用动态页面开发的,比如你是jsp开发的页面,在页面中嵌入的java代码
<%
Date d = new Date();
%>
2.如果前台是静态页面开发的,比如html,则在js编写一个计时器
ajax在第一次加载后使用ajax返回一个服务器的时间v_time,
然后你对这个v_time时间进行每秒计时累加一次,可以参考如下方法:
http://tlk20071.iteye.com/blog/1464263
1.如果前台页面使用动态页面开发的,比如你是jsp开发的页面,在页面中嵌入的java代码
<%
Date d = new Date();
%>
2.如果前台是静态页面开发的,比如html,则在js编写一个计时器
ajax在第一次加载后使用ajax返回一个服务器的时间v_time,
然后你对这个v_time时间进行每秒计时累加一次,可以参考如下方法:
http://tlk20071.iteye.com/blog/1464263
追问
sorry 我只能选一个最佳答案,虽然他那个也不是很好。
jsp中能用你说的那个方法来刷新时间?jsp中写线程,不太可能吧。
还是我说的,那个方法,只是当时没想通,现在想好了。
服务器传过来一个时间戳,时间戳它是一个数字啊,每秒加1000.
然后通过时间戳来构建date =new Date(time); 时间戳在变化,
当然构建出来的时间就会有变化。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询