JavaScript存储方式
三种存储方式:
1、sessionStorage
2、localStorage
3、cookie
sessionStorage
传递方式:不会自动将数据发给服务器,仅在本地保存
数据大小:可以达到5M或更大
有效期:仅在当前浏览器窗口关闭前有效
作用域:不在不同的浏览器窗口中共享
**api**
sessionStorage.setItem("key", "value")
// 将value存储到key字段
var value = sessionStorage.getItem("key")
// 获取本地指定key对应的值
sessionStorage.removeItem("key")
// 删除指定key对应的值
sessionStorage.clear()
// 清除所有的key/value
sessionStorage.key(i)
// 获取指定下标key对应的值
// 可通过sessionStorage.length获取sessionStorage的长度
localStorage
传递方式:不会自动将数据发给服务器,仅在本地保存
数据大小:可以达到5M或更大
有效期:始终有效,窗口或浏览器关闭也一直保存,因此用作持久出局
作用域:在所有同源窗口中都是共享的
只支持string类型的存储
**api**
//可先判断浏览器是否支持localstorage
if (!window.localStorage){
alert("浏览器不支持localStorage")
return false
}else{
var storage = window.localStorage
//写入
storage["a"] = 1
storage.b = 2
storage.setItem("c", 3)
//读取
var a = storage.a
var b = storage["b"]
var c = storage.getItem("c")
//修改
storage.a = 6
//删除
storage.removeItem("a")
storage.clear() //全部清除
//与sessionStorage相同,可通过length与key()获取长度与键对应的值
//存储json格式数据时可通过以下api进行处理后存取
JSON.stringify(data) //将data转为字符串格式
JSON.parse(data) //将data转为json格式
}
cookie
传递方式:始终在同源的http请求中携带
数据大小:不能超过4k
有效期:仅在设置的过期时间之间有效
作用域:在所有同源窗口中都是共享的
**api**
// 内存cookie, 随浏览器关闭消失
// 不设置expires=即可
// 磁盘cookie,关闭浏览器后依然存在
// 需要设置expires(过期时间)
var date = new Date()
var expiresDays = 10
date.setTime(date.getTime() + expiresDays*24*3600*1000)
// 设置过期时间为10天
document.cookie = "str=" + escape("I love ajax") + ";" + "expires=" + date.toGMTString()
var cook = document.cookie
// 获取cookie(得到cookie字符串,可通过split(";")分割获取各值)
// 删除cookie只需要把过期时间设置为过去的时间