在實作過程中,碰到寫入 Cookie 字元的錯誤,因為我傳入的是一段 HTML 程式碼,所以很多符號都不能使用,在 ASP.NET 實作很簡單,使用 server.urlencode(string) 和 server.urldecode(string) 兩函式便可輕鬆解決;另一方面,ASP.NET 也很容易的讀取設定 cookie 內的值。
而在 Javascript 中就都要自己來了,所以我找了一下網路上的資源,程式碼和引用網址都貼在下面了,歡迎取用!
<script language="javascript"> /*這裡開始 UrlEncode、UrlDecode 函數*/ function UrlEncode(str){ var ret=""; var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%"; var tt= ""; for(var i=0;i<str.length;i++) { var chr = str.charAt(i); var c=str2asc(chr); tt += chr+":"+c+"n"; if(parseInt("0x"+c) > 0x7f) { ret+="%"+c.slice(0,2)+"%"+c.slice(-2); } else { if(chr==" ") ret+="+"; else if(strSpecial.indexOf(chr)!=-1) ret+="%"+c.toString(16); else ret+=chr; } } return ret; } function UrlDecode(str) { var ret=""; for(var i=0;i<str.length;i++) { var chr = str.charAt(i); if(chr == "+") { ret+=" "; } else if(chr=="%") { var asc = str.substring(i+1,i+3); if(parseInt("0x"+asc)>0x7f) { ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6))); i+=5; } else { ret+=asc2str(parseInt("0x"+asc)); i+=2; } } else { ret+= chr; } } return ret; } function set_cookie(key, value, exp, path, domain, secure ) { var cookie_string = key + "=" + escape ( value ); if (exp) { cookie_string += "; expires=" + exp.toGMTString(); } if (path) cookie_string += "; path=" + escape(path); if (domain) cookie_string += "; domain=" + escape(domain); if (secure) cookie_string += "; secure"; document.cookie = cookie_string; } function get_cookie(cookie_name) { var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); if (results) return (unescape(results[2])); else return null; } function delete_cookie(cookie_name) { var cookie_date = new Date(); //current date & time cookie_date.setTime(cookie_date.getTime() - 1); document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString(); } </script>
引用:用JavaScript实现UrlEncode和UrlDecode
Javascript cookie操作函数set, get & delete
回目錄
回首頁
沒有留言 :
張貼留言