2011-04-01 30 views
14

我trief使用中的PhoneGap的localStorage的對象的字符串「[對象的對象]」代替的對象,而是獲得一個對象,爲getItem只接收一個字符串"[object Object]"的PhoneGap localStorage的返回

var storage = window.localStorage; 
storage.setItem('test',{'name':'mark','greeting':'Hello'}); 
console.log(storage.getItem('test')); 

谷歌瀏覽器的控制檯,它說:

[object Object]

的 「執行console.log(存儲)」 的輸出如下:

 
Storage 
... 
test: "[object Object]"

如果我試圖訪問它只是說「不確定」的對象的屬性:

 
storage.getItem('test').name 

任何想法如何得到這個工作?

+0

你確定控制檯不只是顯示** [object Object]嗎? 'console.log(storage.getItem('test')。name)'show? – RoToRa 2011-04-01 13:52:14

+0

正如我寫的:'undefined' :) – hering 2011-04-01 14:14:05

+0

我完全錯過了:-) – RoToRa 2011-04-01 14:20:54

回答

35

HTML5 localStorage允許您存儲strings only

您在存儲對象時必須執行JSON.stringify,而在檢索對象時必須執行。

+1

我使用dojo並做了dojo.toJson和dojo.fromJson – blong824 2012-01-25 19:20:07

+0

stringify和parse方法值得黃金。但在Android上(在三星的2.3.3上的應用程序內瀏覽器中測試),會出現以下錯誤:「Web控制檯(5504):在file:/// android_asset/www /」等位置未捕獲非法訪問,如果我嘗試這樣做: JSON.parse(localStorage.getItem('purchases')) – Wytze 2013-11-04 20:43:32

+0

@Wytze:如果你只是做'localStorage.getItem('購買')',沒有JSON.parse,錯誤也會發生嗎?因爲「非法訪問」聽起來像問題在於localStorage,而不是JSON。 – Martijn 2013-11-05 08:52:32