cookie的三种操作方法

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1,jquery.cookie.js

这一篇文章已经写的很详细了:

http://www.cnblogs.com/afuge/archive/2013/07/03/3169048.html

2,原生js操作cookie

jquery.cookie.js一般会出现cookie不兼容问题就要用原生的js了

<script language=javascript>

//获得coolie 的值

function cookie(name){

var cookieArray=document.cookie.split("; ");//得到分割的cookie名值对

var cookie=newObject();

for(var i=0;i<cookieArray.length;i++){

var arr=cookieArray[i].split("="); //将名和值分开

if(arr[0]==name)returnunescape(arr[1]);//如果是指定的cookie,则返回它的值

}

return"";

}

function delCookie(name)//删除cookie

{

document.cookie = name+"=;expires="+(newDate(0)).toGMTString();

}

function getCookie(objName){//获取指定名称的cookie的值

var arrStr = document.cookie.split("; ");

for(var i =0;i < arrStr.length;i ++){

var temp = arrStr[i].split("=");

if(temp[0] == objName)returnunescape(temp[1]);

}

}

function addCookie(objName,objValue,objHours){ //添加cookie

var str = objName +"="+ escape(objValue);

if(objHours >0){ //为时不设定过期时间,浏览器关闭时cookie自动消失

var date =newDate();

var ms = objHours*3600*1000;

date.setTime(date.getTime() + ms);

str +="; expires="+ date.toGMTString();

}

document.cookie = str;

}

function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值

{

var Days =30;//此 cookie 将被保存 30 天

var exp =newDate(); //new Date("December 31, 9998");

exp.setTime(exp.getTime() + Days*24*60*60*1000);

document.cookie = name +"="+ escape (value) +";expires="+ exp.toGMTString();

}

function getCookie(name)//取cookies函数

{

var arr = document.cookie.match(newRegExp("(^| )"+name+"=([^;]*)(;|$)"));

if(arr !=null)returnunescape(arr[2]);returnnull;

}

function delCookie(name)//删除cookie

{

var exp =newDate();

exp.setTime(exp.getTime() -1);

var cval=getCookie(name);

if(cval!=null) document.cookie= name +"="+cval+";expires="+exp.toGMTString();

}

</script>

3,服务器端处理

/// <summary>

/// 将点击的值存放到Cookie中

/// </summary>

PRivate void SetCookieValue(HttpContext context, string dic, string cookieName, string keyName)

{

HttpCookie cookie = new HttpCookie(cookieName);//初使化并设置Cookie的名称

if (context.Request.Cookies[cookieName] != null)

{

cookie = context.Request.Cookies[cookieName];

if (cookie.Values.Count > 0 && cookie.Values.GetValues(keyName) != null && cookie.Values.GetValues(keyName).Length > 0)

{

Remove(cookieName, keyName);

}

}

TimeSpan ts = new TimeSpan(0, 3, 0, 0, 0);//过期时间为3小时

cookie.Expires = DateTime.Now.Add(ts);//设置过期时间

cookie.Values.Add(keyName, dic);

context.Response.AppendCookie(cookie);

//NCookieUtil.SetCookie(keyName, dic);

}

/// <summary>

/// 将点击的值从Cookie中取出

/// </summary>

public string GetClickValue(HttpContext context, string cookieName, string keyName)

{

string userName = "";

if (context.Request.Cookies[cookieName] != null)

{

if (context.Request.Cookies[cookieName][keyName] != null)

{

userName = context.Request.Cookies[cookieName][keyName].ToString();

}

}

//userName = NCookieUtil.GetCookie(keyName);

return userName;

}

/// <summary>

/// 移除cookie中指定的键,若是最后一个键则移除这个cookie

/// </summary>

public static void Remove(string cookieName, string keyName)

{

HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];

if (cookie != null)

{

if (cookie.Values.Count > 0)

{

if (cookie.Values.Count == 1)

{

//若是最后一个键则移除这个cookie,否则会多出一个空值

cookie.Values.Remove(HttpUtility.UrlEncode(keyName));

cookie.Expires = DateTime.Now.AddDays(-1);

}

else

{

cookie.Values.Remove(HttpUtility.UrlEncode(keyName));

}

HttpContext.Current.Response.Cookies.Add(cookie);

}

}

}

其实这三种方法还是建议用第二种方法!

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航