2011-09-06 88 views
0

我是新來的HTML5/Javascript和我有一個概念問題,我認爲。我使用Aptana作爲我的環境,它使用FireFox進行調試。SessionStorage似乎仍然是空的

這裏是有問題的代碼:

var req = new ContactRequest("Mister Peachy", "peach.png", "One Liner Message"); 

sessionStorage.Requests = new Array(); 
sessionStorage.Requests[0] = req; 

req = new ContactRequest("Anon Ymous", "person.png", "Another one line msg"); 

sessionStorage.Requests[1] = req; 

這個問題似乎是sessionStorage.Requests總是等於「」。我嘗試使用.setItem,但也沒有工作。

回答

2

你需要做的就是將你的數據串聯起來存儲並解析它來檢索。這裏有一個我寫的小接口

App.session = (function() { 
    var self = {}; 

    self.get = function (key) { 
    var b = sessionStorage.getItem(key); 
    return b ? JSON.parse(b) : null; 
    } 

    self.set = function (key, value) { 
    var b = JSON.stringify(value); 
    sessionStorage.setItem(key, b); 
    } 

    return self; 
})(); 

var session = App.session; 
session.set('foo', 'bar'); 
var bar = session.get('foo'); 
console.log(bar); 
+1

另外請注意,默認情況下,所有瀏覽器中都不支持JSON,但如果不是,則可以使用JSON2(https://github.com/douglascrockford/JSON-js)默認情況下內置。 – Matt

+0

@Matt:你知道任何支持sessionStorage但不支持JSON的瀏覽器嗎? –

1

sessionStorage不能存儲對象,它只能存儲字符串。

如果你想存儲其他東西,你將不得不使用JSON。

+0

我假設這對localStorage來說是相同的,對嗎? –

+0

@Driss Zouak:這是正確的。 'sessionStorage'和'localStorage'共享完全相同的API –

1

documentation

每個存儲對象提供對鍵/值對,其中 有時被稱爲項目的列表。鍵是字符串。任何字符串 (包括空字符串)都是有效的密鑰。 值同樣是 字符串。

強調添加。你不能在sessionStorage中存儲對象。

Mozilla也有這個意見:

注意:雖然值可以通過的的getItem和setItem方法 標準 JavaScript屬性訪問方法的使用設置和讀取建議。

注意:請注意,您存儲在本頁中描述的任何存儲庫 中的所有內容都將在存儲之前通過其.toString方法 轉換爲字符串。因此,嘗試存儲通用對象將導致 字符串「[object Object]」被存儲,而不是對象或其JSON表示。使用本機JSON解析和序列化瀏覽器提供的方法是以字符串格式存儲 對象的一種很好且常用的方法。

相關問題