DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> javascript實現獲取服務器時間
javascript實現獲取服務器時間
編輯:關於JavaScript     

JS是在客戶端運行的腳本,而不是運行在服務器上,通常來說,通過JS獲取時間的時候獲取到的時間是訪客本地電腦上的時間,為了讓網頁上的時間不因訪客電腦差異而不同,我們有必要直接JS獲取服務器時間。

下面是完整的js獲取服務器時間代碼,是使用javascript獲取服務器時間的完整實例,js動態刷新服務器時間。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>AJAX獲取服務器時間</title>
<script type="text/javascript">
    /*
     * ajax 函數,處理 ajax 請求
     * @param function callback 回調函數
     * @因為要和服務器交互,所以必須在服務器環境運行,不能在硬盤上直接打開
    */
    function ajax(callback){
        if(typeof callback!='function') return;
        var ajaxObject;
        try{
            ajaxObject=new XMLHttpRequest();
        }catch(e){
            try{
                ajaxObject=new ActiveXObject('Microsoft.XMLHTTP');
            }catch(e){
            }
        }
        if(!ajaxObject) return;
        if(ajaxObject.overrideMimeType){
            ajaxObject.overrideMimeType('text/html');
        }
        //location.href可以換成其他url,但必須是同一個站點的鏈接,並且文件存在
        ajaxObject.open('get',location.href);
        ajaxObject.send(null);
        ajaxObject.onreadystatechange=function(){
            if(ajaxObject.readyState==4){
                if(ajaxObject.status==200){
                    callback(ajaxObject);
                }
            }
        };
    }
    /*
     * 獲取時間並動態刷新
    */
    function getTime(){
        ajax(
            function(ao){
                //只需要AJAX一次,將服務器時間獲取後以毫米為單位保存到一個變量中
                _timestamp=Date.parse(ao.getResponseHeader('Date'));
                _timestamp=_timestamp.toString().match(/^\d$/)?_timestamp:new Date().getTime();
                //設置定時器每過一秒動態刷新一次時間
                setInterval(
                    function(){
                        //這裡可以自定義時間顯示格式
                        document.getElementById('_timer').innerHTML=new Date(_timestamp).toLocaleString();
                        _timestamp+=1000;
                    },
                    1000
                );
            }
        );
    }
    window.onload=getTime;
</script>
</head>
<body>
    <div id="_timer">正在獲取服務器時間……</div>
</body>
</html>

思路分析:

服務器端時間這個概念很模糊。因為服務器端畢竟可能不是由一台機器組成的。最簡單的情況,也分web服務器和db服務器。你說的究竟是哪一種

如果是web服務器。
那麼直接在java或者.net那頭new Date()就ok了
不要在網頁中的<script>裡面new Date,那個只是客戶端時間

如果是db服務器。
需要連接到數據庫,通過sql來取得。比如oracle的就是select sysdate from dual。

示例:

如果js要取得這樣的服務器端時間,方法有很多。思路大體差不多。
1.
<script type="text/javascript">
    var date = <%=date(剛才在服務器端取得的時間,內容取得方法上面分析過了)%>
</script>

2.<script type="text/javascript" src=".../ScriptServlet"></script>
將Servlet的返回流中寫入一個js文件,使其當中的var nowDate = 服務器端時間

3.ajax,這個就不說了,網上一大堆

以上所述就是本文的全部內容了,希望大家能夠喜歡。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved