用js做時(shí)間校正,獲取本機(jī)時(shí)間,是存在bug的。
使用js也可獲取到服務(wù)器時(shí)間,原理是使用 ajax請(qǐng)求,返回的頭部信息就含有服務(wù)器端的時(shí)間信息,獲取到就可以了。以下:
1、依賴jQuery
代碼:
function getServerDate(){return new Date($.ajax({async: false}).getResponseHeader("Date"));}以上函數(shù)返回的就是一個(gè)Date對(duì)象,注意在使用ajax時(shí)必須同步,要不然無法返回時(shí)間日期。
無需填寫請(qǐng)求鏈接;
如果服務(wù)器時(shí)間和本地時(shí)間有時(shí)差,需要做校正。
2、原生
代碼:
function getServerDate(){var xhr = null;if(window.XMLHttpRequest){xhr = new window.XMLHttpRequest();}else{ // iexhr = new ActiveObject("Microsoft")}xhr.open("GET","/",false)//false不可變xhr.send(null);var date = xhr.getResponseHeader("Date");return new Date(date);}同樣返回的是一個(gè)Date對(duì)象,xhr.open()必須使用同步;
無需填寫請(qǐng)求鏈接;open,send,和getResponseHeader 必須按序編寫。
如需使用異步請(qǐng)求,可監(jiān)聽onreadystatechange狀態(tài)來做不同的操作。
代碼如下:
function getServerDate(){var xhr = null;if(window.XMLHttpRequest){xhr = new window.XMLHttpRequest();}else{ // iexhr = 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);}}}使用異步不是很方便返回時(shí)間。
這里的readyState有四種狀態(tài),方便做不同處理:
0: 請(qǐng)求未初始化
1: 服務(wù)器連接已建立
2: 請(qǐng)求已接收
3: 請(qǐng)求處理中
4: 請(qǐng)求已完成,且響應(yīng)已就緒
失敗狀態(tài),status的值:
200: "OK"
404: 未找到頁面
以上所述是小編給大家介紹的JavaScript獲取服務(wù)器端時(shí)間的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注