2011-12-13 87 views
2

我是新来的html5网络存储无法将数组或对象设置为html5网络存储?

设置为网络存储很容易。

sessionStorage.someKey = 'someValue'; 

但是当我设定数组或对象到键等

sessionStorage.name = ['abc','def']; 
typeof sessionStorage.name; 
//output "string" 
//a object is the same 

所以如何使用web存储阵列或对象?或者有更好的方法来解决这个问题?

回答

4

我曾经使用过像这样的数据结构,通过使用JSON。下面是一个简单...

var data = { First: "abc", Second: "def" }; 
var jsData = JSON.stringify(data); 
window.sessionStorage.setItem("key1", jsData); 

然后你就可以得到像这样的数据...

var jsData = window.sessionStorage.getItem("key1"); 
var data = JSON.parse(jsData); 
0

出于安全原因,我将所有内容都放入JSON编码的Base64编码字符串中。也许不需要Base64,但更安全。

实施例只是用JSON:

sessionStorage.name = JSON.stringify(['abc','def']); 
typeof JSON.parse(sessionStorage.name); 

这将是一个数组。

1

你可以这样做:

function saveInSession(key, val) { 
    sessionStorage[key] = JSON.stringify(val); 
} 

function getFromSession(key) { 
    return JSON.parse(sessionStorage[key]); 
} 

您需要包括json2.js在你的页面,以确保JSON.parse()JSON.stringify()跨浏览器支持。