手机版

详细说明用JavaScript获取服务器时间的方法

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

本文说明了用JavaScript获取服务器时间的方法。分享给大家参考,如下:

Javascript是一个在客户端运行的脚本。我们通常使用新的Date()来获取当前时间,但是我们获取的是客户端的时间,客户端的时间可以随意更改。如果要做产品发布倒计时,如果客户端的时间变了,我们会闹笑话。在业务中仍然有很多需要服务器时间的场景,那么如何才能只通过js获取服务器时间呢?实际上只需要一个ajax请求,当前的服务器时间是通过读取XMLHttpRequest对象的响应头中的时间戳获得的!

原理就这么简单:通过ajax向服务器发送请求,服务器收到请求时,可以读取响应头的时间戳,无论请求成功还是失败,都可以得到时间戳。你怎么知道服务器已经收到请求了?发送ajax请求后,XMLHttpRequest有五个状态变化:

XMLHttpRequest.readyState值 表示的意思 0没有初始化,已经创建了一个XMLHttpRequest对象,但是它还没有初始化。1尚未发送,代码调用了xmlhttprequest open()方法,xmlhttprequest准备向服务器2发送请求。请求已通过send()方法发送到服务器,但尚未收到响应,因此您可以读取响应头信息。3.它正在被接收,并且http响应头信息已经被接收,但是消息体还没有被完全接收。4.已经装上了。已经完全收到回复。我们可以通过听XMLHttpRequest的readystatechange事件来判断我们处于哪个状态。从表中可以看出,当XMLHttpRequest.readyState的值为2时,我们可以读取响应头,得到我们想要的时间戳。代码如下:

p id=' time '/pscripttajax()函数Ajax(option){ var xhr=null;if(窗口。XMLHttpRequest){ xhr=新窗口。XMLHttpRequest();} else {//iexhr=新的活动对象(' Microsoft ')}//通过get请求当前文件xhr.open('get ','/');xhr . send(null);//监控请求状态更改xhr。onreadystatechange=function(){ vartime=null,curdate=nullIf(xhr.readyState===2){ //获取响应头中的时间戳时间=xhr。getResponse标头('日期');console . log(xhr . getallresponseheaders())curDate=new Date(时间);Document.getelementbyid ('time ')。innerhtml='服务器时间为:' curate . getfull year()'-'(curate . getmonth()1)'-' curate . getdate()' ' curate . gethours()' : ' curate . getminutes()' : ' curate . getseconds();}} }/script在这里,到达服务器时间。实际上,响应头中的信息不仅仅是时间戳,xhr.getAllResponseHeaders()可以用来获取整个响应头信息。响应头还包括其他信息,如服务器类型和版本号、请求的文件类型和代码(见下图1),可以通过这种方式读取。为了证明我得到的是服务器时间,我用手机测试了一下(见下图2)。当前北京时间为2015年4月20日21:59,PC时间调整为2015年2月1日21:16

图一

图二

更多对JavaScript相关内容感兴趣的读者可以查看本网站的主题:《JavaScript时间与日期操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、0103010。

希望本文对JavaScript编程有所帮助。

版权声明:详细说明用JavaScript获取服务器时间的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。