js與cookie的點點滴滴
在做高校雲平台成績系統的時候,利用js設定cookie,再在後台擷取cookie的過程中有一些小小的插曲。
1. Cookie的設定
//---------setCookie ;path=/;加上此句話便可以訪問整個目錄的了function setCookie(name, value) { //cookie的相關設定以及逾時時間的設計 var days = 0.03; var exp = new Date(); exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000); document.cookie = name + = + escape(value) + ;expires= + exp.toGMTString() + ;path=/;}
此時進行相關的cookie設定,我們知道頁面的重新導向後Request請求時無法在新的頁面中進行擷取的,也就是重新導向的頁面是取不到之前的Request中的資料。但是cookie是可以被共用的。
//為了跳轉頁面能夠拿到當前的值,故而用cookie進行儲存 setCookie(temporaryClassId, temporaryClassId); setCookie(teacherId, teacherId); setCookie(type, type); setCookie(year, year);
2. 解析上述的設定中的參數
當上面的cookie設定完畢之後,發現在後台取的時候發生了亂碼
//擷取cookie的值 //根據參數擷取班級id HttpCookie cookieId = System.Web.HttpContext.Current.Request.Cookies.Get(year); //得到的是亂碼 //string yearId = cookieId.Value; //利用cookie進行資料的儲存,這樣可以便於即使跨不同的方法也是可以得到的, //js利用escape對資料進行加密,但是數字是不加密的,對於漢字那麼出現的就是亂碼,需要解密 //HttpUtility.UrlDecode就是解密使用的,擷取到學年 string yearId = HttpUtility.UrlDecode(cookieId.Value);
Ø escape
js利用escape對資料進行加密,但是數字是不加密的,對於漢字那麼出現的就是亂碼,需要解密,HttpUtility.UrlDecode就是解密使用的,當然也是可以利用un escape函數實現解密操作的。
Ø path=/
在用JS存取Cookie的時候,發現在不同的目錄下,調用同一個js方法來儲存Cookie,到別的目錄取不出或取出的值是不對的,原因可能是儲存的路徑不對或者是沒有指定,導致的結果是在不同的目錄進行儲存,就會出現不同的結果,為了統一我們可以將路徑進行指定,path=/,path就是指定了相應的路徑,/就是根目錄,也就是這個目錄下的所有的頁面都是可以取到cookie的值的。
Ø name和value
cookie是以索引值對的形式進行儲存的,設定的時候我們需要設定key同樣需要設定value,取值的時候,我們可以根據cookie的name擷取到cookie,進而根據其value屬性得到其值。
3. 小結
學習的時候就會發現,看似很小的東西,其中蘊含的東西是那麼的多,所有知識都是寶藏,只要挖掘,潛力無限。