Jquery Cookie插件 – 多个值?
我正在使用流行的jquery Cookie插件https://github.com/carhartl/jquery-cookie想知道如何设置和读取具有多个值的cookie? 或者也许可以添加/删除该cookie的值?
$ .cookie(“MyTestCookie”,email,{expires:10});
我想在同一个cookie中添加用户名
更新:只是.Net中的一个示例在cookie中存储多个值
如果要设置具有多个值或“子键”的cookie并使其可从.NET中读取,则需要将子项存储为格式化为查询字符串的名称 – 值对。 您可以使用jQuery.param()方法将Javascript对象转换为查询字符串。
var obj = { email: 'jdoe@example.com', username: 'jdoe' }; $.cookie("MyTestCookie", $.param(obj), { expires: 10 });
然后在服务器上,您可以访问以下值:
var email = Request.Cookies["MyTestCookie"]["email"]; var username = Request.Cookies["MyTestCookie"]["username"];
编辑:我创建了一个测试页面,显示在服务器和客户端上读/写多值cookie。 http://www.systemex.net/Cookies/
笔记:
- 您需要注意转义和取消子键。 这样任何embedded =和&都可以正确处理
- 在读取和编写jquery cookie时,请使用选项{raw:true},这样它就不会双重转义。
- 我写了一个$ .deparam函数,它将name = value&name2 = value2字符串转换为javascript对象{name:value,name2:value2}
- 最后一点,jquery cookie插件不会覆盖同名的cookie,它只是将它附加到当前的cookie集合中。 此时,重写插件以支持子键和修改现有cookie可能会更好。
无论如何希望这有帮助。
这是Default.aspx
Get Cookie From Server:
- Email: <%= GetCookie("MyTestCookie", "email")%>
- Username: <%= GetCookie("MyTestCookie", "username")%>
Get Cookie From Client:
- Email:
- Username:
- Raw:
Set Cookie From Client:
- Email:
- Username:
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { var cookie = new HttpCookie("MyTestCookie"); cookie["email"] = HttpUtility.UrlEncode("jdoe@example.com"); cookie["username"] = HttpUtility.UrlEncode("jdoe&123"); Response.Cookies.Add(cookie); } } public string GetCookie(string name, string key) { var cookie = Request.Cookies[name]; return cookie != null ? HttpUtility.UrlDecode(cookie[key]) : ""; }
即使不建议你仍然可以为cookie添加多个值并自己进行处理。
(这将减少浏览器中保留的cookie数量,但由于现代浏览器旨在处理大量的cookie,因此无法对加载速度做任何事情)
您可以使用循环添加值并使用特殊字符(如’ % ‘)将它们分开,您可以使用您喜欢的任何加密方法处理字符串,并将所有加密方法保存为单个cookie。
var setofcookies = username + "%" + password + "%" + email; $.cookie("MyTestCookie", setofcookies, { expires: 10 });
稍后您可以使用SPLIT函数将代码转换为正确的数组值:
var cookie = $.cookie('MyTestCookie') var mycookies = cookie.split("%"); document.write(mycookies[0]);
这是您可以用来处理cookie的最合适的方法,其他方法会稍微减慢页面速度。
试试这个: https : //github.com/tantau-horia/jquery-SuperCookie
快速使用:
创建 – 创建cookie
检查 – 检查是否存在
validation – 如果是JSON,请validationcookie值
check_index – validationJSON中是否存在索引
read_values – 将cookie值读为字符串
read_JSON – 将cookie值读取为JSON对象
read_value – 读取存储在JSON对象中的索引值
replace_value – 替换存储在JSON对象中的指定索引的值
remove_value – 删除存储在JSON对象中的值和索引
只需使用:
$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"}); $.super_cookie().read_value("name_of_the_cookie","name_field_1");
当我使用的时候
var obj = { a: 'test', b: 'best' }; $.cookie("MyCookie", $.param(obj), { expires: 10 });
我在cookie中得到了这个值
一%3Dtest%26B%3Dbest
所以得到类似的东西
一个测试=&B =最好
你需要在$ .cookie()之前添加这一行
$.cookie.raw = true;