2009-09-24 31 views
1

的Javascript連載陣列這是莊嚴討厭我的那一刻:吶喊 - 以不同的方式

考慮2個值的數組:

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

當使用jQuery在cookie存儲這一點,的toJSON,cookie的值是這樣的:

["21031","21486"] 

現在考慮單個值的數組:

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

當使用jQuery和的toJSON一個cookie存儲這一點,cookie的值是這樣的:

21239 

這幾乎是完全沒用的,我的,當我拉項目從cookie,一個回來作爲一個單一的價值,另一個回來作爲一個數組,我可以迭代....啊!

爲什麼?

+0

你從哪裏得到'toJSON'? – 2009-09-24 15:13:13

+0

我檢出了http://jollytoad.googlepages.com/json.js,它似乎按預期工作,即使對於單元素數組也是如此。你能詳細解釋一下cookie部分嗎? – artagnon 2009-09-24 15:35:57

回答

3

我建議使用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,你的代碼會自動發生在新的瀏覽器利用瀏覽器的原生功能。

0

餅乾是字符串,所以你所做的只是存儲數組的字符串序列化。如果我:

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

然後document.cookie中具有值「1,2」,這是不是一個數組。

編輯:至於JSON不是原生的jQuery方法,它可能來自插件。你檢查過插件文檔嗎?另外,嘗試一個不同的插件,如你所期望的那樣工作。

1

你做錯了什麼。不管你使用什麼JSON LIB(假設它的實際工作),這個序列化的:

[21031, 21486] 

應該產生這樣的:

"[21031,21486]" 

["21031","21486"]爲您發佈。這看起來像是在序列化單個元素。發佈更多代碼。