通過原生js的ajax或jquery的ajax擷取伺服器的時間

來源:互聯網
上載者:User

標籤:c   class   java   tar   http   a   

在實際的商務邏輯中,經常是與時間相關的,而前端能獲得的時間有兩個:用戶端的時間,伺服器的時間.

用戶端時間通過 javascript中的Date對象可以擷取,如

Java代碼  
  1. var dt = new Date();  
  2. var tm = dt.getTime();  



那麼tm就是用戶端的時間,另外也可以通過對應的getFullYear(),getMonth(),getDate()取到對應的年月日等...
但這個時間可靠嗎?

好吧,那取伺服器時間吧
經常用到的是後台寫一個php,jsp,cgi,asp...通過這些程式來返回一個時間,這是一種解決方案,但僅僅一個時間點,有必要用程式背景程式來實現嗎?

那還有什麼解決方案嗎?
PS:在產生頁面的時候把伺服器時間就寫在裡邊,然後就可以直接用了.但如果只是一個靜態頁面了呢,能這麼幹嗎?

好吧,我在這裡提出我的解決方案: Ajax HTTP Head

原理:
一般伺服器在發送靜態頁面的時候(apache, nginx, lighttpd就目前所知)都是會在 HTTP 頭裡帶一個Date的頭資訊的,那麼我用Ajax直接取頭資訊裡的Date不就OK了嗎!8) 

PS:但ajax發請求出去不是會有本文返回嗎,那本文的內容比請求一次動態網頁面的代價可高多了,是這樣的嗎?8) 

實現:

Java代碼  
  1. var xhr = new XMLHttpRequest();  
  2. if( !xhr ){  
  3.    xhr = new ActiveXObject("Microsoft.XMLHTTP");  
  4. }  
  5. xhr.open("HEAD",location.href,true);  
  6. xhr.onreadystatechange=function(){  
  7.     if( xhr.readyState == 4 && xhr.status == 200 ){  
  8.          alert(xhr.getResponseHeader("Date"));  
  9.     }  
  10. }  
  11. xhr.send(null);  





解釋:
常見的Ajax要求方法為GET,POST而這兩種請求都可能會返回本文體,而發HEAD頭則只會返回對應的頭資訊,不會有本文,且只要javascript可以執行,就可以取當前域的地址作為請求地址,有一定的通用性,且避免了跨域的問題.:lol: 


實踐:

以上代碼的完整版在ie6,7,8,9,opera,chrome,firefox下測試通過


適用範圍:

javascript正常執行的範圍是http/https下生效



其他:
伺服器一定會返回Date頭資訊嗎?
這個是RFC裡要求伺服器必須實現的,只有在101,103,500等幾個狀態代碼的情況下伺服器才可以不返回Date頭.但我們的location.href不在這個情況之列,所以只要當前javascript代碼能正常執行(http方式),那麼這個時間就可以取得到

定製的伺服器不在本文討論範圍之內




轉載請保留以下內容:
author:mooring
sites: http://mooring.iteye.com
date:2012/02/23

 

------------------------------

jquery封裝的ajax方法擷取web伺服器時間

var t = $.ajax({type:‘HEAD‘, async:‘false‘}).getResponseHeader(‘date‘);

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.