此代码允许您在cookie中插入变量数组,然后对其进行修改。
您需要导入jquery.cookie.js http://plugins.jquery.com/cookie/
<script type="text/javascript" src="include/js/jcookie/jquery.cookie.js"></script>
此功能检查cookie。
//Funzione controllo cookie
function checkcookie() {
if (typeof $.cookie('cookie') == 'undefined') {
newcookie();
}
}
此函数将数组转换为字符串并创建cookie。
//Funzione crea cookie
//crea un array e lo trasforma in stringa per il cookie
function newcookie() {
var cookievars = [$.now(),'','','','','','','',''];
var a = "";
for(key in cookievars)
{
b = cookievars[key]+",";
a = a.concat(b);
}
a = a.substring(0,a.length-1);
console.log(a);
$.cookie('cookie', a, { expires: 365 });
}
此函数将字符串变量获取到cookie中并将其转换为数组;修改数组并转换字符串以覆盖cookie
//Funzione modifica cookie
//apre il cookie e recupera la stringa che viene trasformata
//in aarray, modificata e ritrasformata in stringa per il cookie
function modcookie(idlink) {
var a = $.cookie('cookie');
var a = a.split(",");
for(key in a)
{
if (a[key] =='') {
a[key] = idlink;
break;
}
}
b = "";
for(key in a)
{
c = a[key]+",";
b = b.concat(c);
}
b = b.substring(0,b.length-1); //rimuove l'ultima virgola ","
console.log(b);
$.cookie('cookie', b, { expires: 365 });
}
有人知道如何做得更好吗?
答案 0 :(得分:1)
为什么不使用JSON序列化?您可以在写入cookie之前将数据序列化为JSON,并在读取cookie之后以及在使用/修改数据之前进行反序列化。
示例:
function writeJSONCookie(cookieName, data, options) {
options = options || {};
$.cookie(cookieName, JSON.stringify(data), options);
}
function readJSONCookie(cookieName) {
return JSON.parse($.cookie(cookieName));
}
// usage sample
var cookieData = readJSONCookie('someCookie');
// change data
cookieData.property = 'new value';
// persist change
writeJSONCookie('someCookie', cookieData);
这可以灵活地将任何类型的对象或数组存储到任意cookie中。您无需执行当前正在执行的任何手动级联业务。
既然我已经向您展示了这样做的手动方式,我还要指出,Cookie插件支持自动将数据转换为JSON或从JSON转换数据。只需设置以下选项:
$.cookie.json = true;
上面的用法示例变得简单(不需要之前定义的函数):
// usage sample
$.cookie.json = true;
var cookieData = $.cookie('someCookie');
// change data
cookieData.property = 'new value';
// persist change
$.cookie('someCookie', cookieData);