频繁的需要获取当前时间进行一些逻辑处理,但是用js获取本机时间,是存在bug的,那么就需要我们使用服务器时间,js可获取到服务器时间,原理是使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了。
function loadXMLDoc(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new window.XMLHttpRequest(); }else{ // ie xhr = new ActiveObject("Microsoft") } xhr.open("GET","/ntsc.ac.cn",false)//false不可变 xhr.send(null); var date = xhr.getResponseHeader("Date");return new Date(date); }
//获取服务器时间 20210224修改
var nowDate=new Date($.ajax({async:false}).getResponseHeader('Date'));
同样返回的是一个Date对象,xhr.open()必须使用同步;
无需填写请求链接;
open,send,和getResponseHeader 必须按序编写。
如需使用异步请求,可监听onreadystatechange状态来做不同的操作。
function getServerDate(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new window.XMLHttpRequest(); }else{ // ie xhr = new ActiveObject("Microsoft") } xhr.open("GET","/",true); xhr.send(null); xhr.onreadystatechange=function(){ var time,date; if(xhr.readyState == 2){ time = xhr.getResponseHeader("Date"); date = new Date(time); console.log(date); } } }
使用异步不是很方便返回时间。
这里的readyState有四种状态,方便做不同处理:
0: 请求未初始化;
1: 服务器连接已建立;
2: 请求已接收;
3: 请求处理中
4: 请求已完成,且响应已就绪
失败状态,status的值:
200: "OK"
404: 未找到页面
动态显示
window.setInterval(loadXMLDoc, 1000);