通过原生js的ajax方法获取服务器时间(可用于抢购倒计时显示)

时间:2021-10-11 17:03:18

1:通过控制器获取服务器时间返回到前台正确显示(这是一种通用的方法,也是大家一般会直接想到的);
2:利用JS请求在 HTTP header 头里带一个Date的头部信息,用Ajax直接取头部信息里的Date就可获取服务器时间
原生写法:

var xhr = new XMLHttpRequest();  

if( !xhr ){

xhr = new ActiveXObject("Microsoft.XMLHTTP");

}

xhr.open("HEAD",location.href,true);

xhr.onreadystatechange=function(){

if( xhr.readyState == 4 && xhr.status == 200 ){

alert(xhr.getResponseHeader("Date"));

}

}

xhr.send(null);

jquery写法

var time;

$.ajax({type:'HEAD', async: true})

.success(function(data, status, xhr){

time=xhr.getResponseHeader('Date');

});

PS:可能会有问了,ajax请求http这样的话 跟通过控制器获取服务器时间有啥区别么,同样要消耗一次请求,并且每次都会有服务器正文返回。
但是呢:常见的Ajax请求方法为GET,POST而这两种请求都可能会返回正文体,而发HEAD头则只会返回对应的头信息,不会有正文,且只要javascript可以执行,就可以取当前域的地址作为请求地址,有一定的通用性,且避免了跨域的问题