javascript的cookie和asp.net的cookie都是指向同一個東西。廢話不多說看例子。
1.用asp.net在後台寫入cookie,javascript前台讀取
protected void Page_Load(object sender, EventArgs e) { HttpCookie cookie = new HttpCookie("MyCook");//初使化並設定Cookie的名稱 DateTime dt = DateTime.Now; TimeSpan ts = new TimeSpan(0, 0, 1, 0, 0);//到期時間為1分鐘 cookie.Expires = dt.Add(ts);//設定到期時間 //string tmp = System.Web.HttpUtility.UrlEncode("中文", System.Text.Encoding.UTF8); cookie.Values.Add("userid", "123"); cookie.Values.Add("userid2", "456"); Response.AppendCookie(cookie); }
在前台javascript用javascript讀取
<script type="text/javascript"> var allcookies = document.cookie; function test() { //alert(decodeURIComponent(allcookies)); alert(allcookies); } </script>
前端可以正常擷取資料
上面的例子彈出框的內容Mybook=userid=123&userid2=456
但要注意在asp.net輸入中文的時候要轉成UTF-8碼
protected void Page_Load(object sender, EventArgs e) { HttpCookie cookie = new HttpCookie("MyCook");//初使化並設定Cookie的名稱 DateTime dt = DateTime.Now; TimeSpan ts = new TimeSpan(0, 0, 1, 0, 0);//到期時間為1分鐘 cookie.Expires = dt.Add(ts);//設定到期時間 string tmp = System.Web.HttpUtility.UrlEncode("中文", System.Text.Encoding.UTF8); cookie.Values.Add("userid", tmp); cookie.Values.Add("userid2", "中文"); Response.AppendCookie(cookie); }
在前台用javascript直接讀取會獲得亂碼!
MyCook=userid=%e4%b8%ad%e6%96%87&userid2=涓枃
所以輸入中文時要
System.Web.HttpUtility.UrlEncode("中文", System.Text.Encoding.UTF8);
用javascript讀取時
decodeURIComponent(allcookies)
看例子(通過decodeURIComponent可以把中文正確的讀出來
decodeURIComponent(document.cookie);
MyCook=userid=中文&userid2=涓枃
2.用javascript在前台寫入cookie,asp.net後台讀取
前台代碼
document.cookie = "MyCook=userid=123&userid2=456"
後台代碼
if (Request.Cookies["MyCook"] != null) { //Response.Write("Cookie中索引值為userid的值:" + Request.Cookies["MyCook"]["userid"]);//整行 //Response.Write("Cookie中索引值為userid2的值" + Request.Cookies["MyCook"]["userid2"]); Response.Write(Request.Cookies["MyCook"].Value);//輸出全部的值 }