1

我需要将新变量添加到存储在 cookie 中的数组中。我怎么能这样做?

var arr = $.cookie("arr",[1, 2, 3, 4, 5, 6, 7, 8, 9]);
// this is an array of diferent numbers

function pri() { // this function create a number that is not in the array
var n = Math.floor((Math.random() * 15));
var tex;
while ((tex = $.inArray(n, arr)) != -1) {
    n = Math.floor((Math.random() * 15));
}
return n;} //i need for whatever "n" is to be added to my array cookie
4

2 回答 2

1

$.cookie 插件会将数组保存为字符串,并且:

var arr = $.cookie("arr",[1, 2, 3, 4, 5, 6, 7, 8, 9]);

返回请求,例如:

arr=1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9

您必须先保存数组,然后取回字符串并再次拆分,然后您可以推送到它:

$.cookie("arr",[1, 2, 3, 4, 5, 6, 7, 8, 9]); // set the cookie

var arr = $.cookie("arr").split(',');        // get the string and split it

arr.push(pri()); // then add whatever the function returns

现在您可以将修改后的数组保存回 cookie

$.cookie("arr", arr);
于 2013-09-19T16:34:06.293 回答
0

cookie 中的值只能是字符串,因此请使用(非)序列化程序。

JSON 在 JavaScript 中运行良好:

$.cookie("key", JSON.stringify([ 1, 2, 3]);

用法:

function add_value(new_value) {
    var value = JSON.parse($.cookie("key")); // unserialize
    value.push(new_value);                   // modify
    $.cookie("key", JSON.stringify(value));  // serialize
}
于 2013-09-19T16:16:34.247 回答