天天看點

JavaScript之讀取和寫入cookie

  首先先讓我們簡單地了解一下cookie.

  在我們制作網頁的過程中,經常需要把資訊從一個頁面傳遞給另一個頁面,這時候就需要用到JavaScript中的cookie機制了。簡單說來,cookie提供了一種便捷的方式,能夠在使用者的計算機上儲存少量資料并且遠端獲得它們,進而讓網站可以儲存一些細節資訊,比如使用者的習慣設定或是上一次通路網站的時間。cookie本身是一些短小的資訊,能夠由頁面儲存在使用者的計算機上,然後被其他頁面讀取。cookie一般都設定為在一定時間後失效。

  當然,cookie也有局限之處:浏覽器對于能夠儲存的cookie數量有所限制,通常是幾百個或者多一點。一般情況下,每個域名20個cookies是允許的,而每個域最多能儲存4KB的cookie.除了大小限制可能導緻的問題,也有很多原因會引起硬碟上的cookie消失,比如達到有效期限了,或是使用者清理了cookie資訊,或是換用了其他浏覽器。是以,cookie不适合用來儲存重要資料,在編寫代碼時也要考慮到cookie擷取異常的處理方法。

  在JavaScript中,使用document對象的cookie屬性來儲存和擷取cookie.通常,document.cookie裡的資訊是由成對的名稱和值組成的字元串,每一對資料的形式是:

name=value;

  下面我們将通過一個簡單的例子來展示在JavaScript中如何讀取和寫入cookie.

  首先是createCookie.html,在該頁面中會建立一個cookie,完整的代碼如下:

<html>
<head>
    <title>createCookie</title>
    <script>
        function createCookie(){
            //get name and password
            var name = document.getElementById("name").value;
            var pwd = document.getElementById("pwd").value;
            //create cookie
            document.cookie = name+'|'+pwd;
            //go to showCookie.html page
            window.location.href = "showCookie.html";
        }
    </script>
</head>
<body>
    Userame:&nbsp;&nbsp;<input id="name" type="text" /><br><br>
    Password:&nbsp;&nbsp;<input id="pwd" type="password" /><br><br>
    <button onclick="createCookie()">Submit</submit>
</body>
</html>           

該頁面的截圖如下:

點選submit按鈕,就會建立一個cookie,在該cookie中儲存了Username和Password資訊,并且會跳轉到showCookie.html頁面。其中,showCookie.html頁面的完整代碼如下:

<html>
<head>
    <title>showCookie</title>
    <script>
        function showCookie(){
            //document.cookie is a string, using split() function to get cookie date in array form 
            var arr = document.cookie.split('|');
            //processing data in cookie
            var cookie_info = 'Data in cookie:<br>username is:&nbsp;&nbsp;'+arr[0]+"<br>password is:&nbsp;&nbsp;"+arr[1]+'<br>';
            //set content of element of id "res"
            document.getElementById("res").innerHTML = cookie_info;
        }
    </script>
</head>
<body>
    <button onclick="showCookie()">Show Cookie</button>
    <p id="res"></p>
</body>
</html>           

頁面截圖如下:

點選show Cookie按鈕就會顯示cookie裡面的資訊了。

  下面,我們将會在本地和伺服器上分别跑這個程式,分别在IE浏覽器和Chrome浏覽器上運作這個程式,看看cookie的運作情況。

  首先我們在本地運作這個程式,我們将上述兩個檔案都放在E盤中。先在IE浏覽器上運作,在createCookie.html頁面上輸入資訊,并點選submit按鈕,截圖如下:

跳轉到showCookie.html頁面後,點選show Cookie按鈕,頁面截圖如下:

cookie在本地環境中的IE浏覽器中運作正常。

  接下來,我們看看在Chrome浏覽器中運作情況,首先在Chrome浏覽器中打開createCookie.html頁面,輸入資訊,并點選submit按鈕,截圖如下:

同樣的程式,這次cookie在Chrome浏覽器中卻運作失敗了。

  接着讓我們在伺服器中運作這個程式,需要用到xampp,并打開Apache伺服器,将上述兩個html檔案放在xampp安裝檔案夾下的htdocs檔案夾下(具體的操作方法可以參考這篇部落格:

JavaScript之使用AJAX(适合初學者)

)。我們現在IE浏覽器中運作該程式,在IE浏覽器中輸入網址:

http://localhost/createCookie.html

,截圖如下:

點選Submit按鈕,跳轉到showCookie.html頁面,并點選show Cookie按鈕,截圖如下:

  然後我們在Chrome浏覽器中輸入網址:

這次在伺服器環境下,IE浏覽器和Chrome浏覽器的cookie都運作正常!

  本次分享到此結束,歡迎大家交流~~

繼續閱讀