问题描述
||
我在使用Cookie时遇到了麻烦。我有一堆链接,当单击它们时会创建一个cookie。对于每个链接,我需要能够将该Cookie保存到关联数组。棘手的部分是cookie值是动态创建的。直到它们被单击(使用id属性),我们才知道它们是什么。
这是我用来创建Cookie的点击函数:
$ j(\'a.createCookie \')。click(function(e){
var cookieName = \"InsightsCookie\";
var cookieValue = $j(this).attr(\"id\");
$j.cookie(cookieName,cookieValue,{expires: 365,path: \'/\'});
});
任何帮助将非常感激。
解决方法
要将Cookie保存到全局关联数组,您可以执行以下操作:
var my_global_assoc_array = {};
$j(\'a.createCookie\').click(function(e) {
var cookieName = \"InsightsCookie\";
var cookieValue = $j(this).attr(\"id\");
$j.cookie(cookieName,cookieValue,{expires: 365,path: \'/\'});
// save just the value of the cookie
my_global_assoc_array[cookieName] = cookieValue;
// or save the whole cookie because you may want to know more about the cookie path,cookie expiration,etc
my_global_assoc_array[cookieName] = $j.cookie(cookieName);
});
然后在以后的某个时刻,您可以遍历assoc数组中收集的内容:
for(var i in my_global_assoc_array)
console.log(\"cookie name = \" + i + \",cookie value = \" + i);
我对问题的这一部分感到困惑:\“棘手的部分是动态创建cookie值。\”由于cookie值只是my_global_assoc_array中的值,为什么您需要事先知道这些值是什么?
更新资料
如果希望单个cookie包含my_global_assoc_array的所有值,则在set cookie例程中使用循环。像这样:
var my_global_assoc_array = {};
$j(\'a.createCookie\').click(function(e) {
var cookieName = \"InsightsCookie\";
var cookieValue = $j(this).attr(\"id\");
// save all values of the cookie in an assoc array to uniqueify the list.
my_global_assoc_array[cookieValue] = 0;
// temporarily turn cookieValue into an Array,add all the cookieValues to it and
// use join to stringify it to a CSV value of the values.
cookieValue = new Array();
for(var i in my_global_assoc_array)
cookieValue.push(i);
cookieValue = cookieValue.join(\',\');
// store cookieValue which is now a CSV list of cookieValues
$j.cookie(cookieName,path: \'/\'});
});