簡體   English   中英

當天的尖叫 - Javascript以不同的方式序列化陣列

[英]Scream of the day - Javascript serialising arrays in different ways

這在當下令我很煩惱:

考慮一個包含2個值的數組:

var myArray = new Array();
myArray.push(21031);
myArray.push(21486);

使用jquery和toJSON將其存儲在cookie中時,cookie的值如下所示:

["21031","21486"]

現在考慮一個單值的數組:

var myArray = new Array();
myArray.push(21239);

使用jquery和toJSON將其存儲在cookie中時,cookie的值如下所示:

21239

這對我來說幾乎完全沒用,因為當我從cookie中提取項目時,一個回來作為單個值,另一個回來作為一個我可以迭代的數組....啊!

為什么?

我建議使用json2.js'JSON.stringify 這兩種情況都是正確的:

// [] is the same as new Array();
var foo = [];

foo.push(1);
foo.push(2);

JSON.stringify(foo); // "[1, 2]"

var bar = [];

bar.push(1);

JSON.stringify(bar); // "[1]"

此外,當您使用json2.js API時,您的代碼會自動利用新瀏覽器中的瀏覽器本機功能。

你做錯了什么。 無論你使用什么JSON lib(假設它確實有效),序列化:

[21031, 21486]

應該產生這個:

"[21031,21486]"

你發布的不是["21031","21486"] 這看起來像是在序列化各個元素。 發布更多代碼。

Cookies是字符串,所以你要做的就是存儲數組的字符串序列化。 如果我做:

document.cookie = [1, 2].toString()

然后document.cookie的值為“1,2”,這不是一個數組。

編輯:因為toJSON不是一個原生的jQuery方法,它可能來自一個插件。 你檢查過插件文檔了嗎? 或者,嘗試使用其他預期的插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM