前端獲取服務器時間

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狀態來作不一樣的操做。ajax

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有四種狀態,方便作不一樣處理:服務器

  1. 0: 請求未初始化;
  2. 1: 服務器鏈接已創建;
  3. 2: 請求已接收;
  4. 3: 請求處理中
  5. 4: 請求已完成,且響應已就緒

失敗狀態,status的值:
200: "OK"
404: 未找到頁面異步

相關文章
相關標籤/搜索