将Cookies保存到Javascript关联数组中

问题描述

|| 我在使用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: \'/\'});

});