Сохранение файлов cookie в ассоциативный массив Javascript - PullRequest
0 голосов
/ 27 мая 2011

У меня проблемы с печеньем.У меня есть несколько ссылок, которые при нажатии создают cookie.Для каждой ссылки мне нужно иметь возможность сохранить этот файл cookie в ассоциативный массив.Сложность в том, что значения cookie создаются динамически.Мы не знаем, что это такое, пока на них не нажали (используя атрибут id).

Вот функция щелчка, которую я использую для создания куки:

$ j ('a.createCookie '). click (function (e) {

 var cookieName = "InsightsCookie";

 var cookieValue = $j(this).attr("id");

 $j.cookie(cookieName, cookieValue, {expires: 365, path: '/'});     

});

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 27 мая 2011

Чтобы сохранить файлы 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);
});

Затем, в какой-то более поздний момент, вы можете выполнить итерацию по тому, что собрано в вашем массиве:

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, cookieValue, {expires: 365, path: '/'});

});
...