js獲取伺服器時間
- 最近新作了一個專案,頻繁的需要獲取當前時間進行一些邏輯處理,但是用js獲取本機時間,是存在bug的,那麼就需要我們使用伺服器時間,js可獲取到伺服器時間,原理是使用 ajax請求,返回的頭部資訊就含有伺服器端的時間資訊,獲取到就可以了。
var req = new XMLHttpRequest();
req.open(`GET`, location, false);
req.send(null);
console.log(req.getResponseHeader(`Date`));
function getServerDate(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new window.XMLHttpRequest();
}else{ // ie
xhr = new ActiveObject("Microsoft")
}
xhr.open("GET","/",false)//false不可變
xhr.send(null);
var date = xhr.getResponseHeader("Date");
return new Date(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: 未找到頁面