H5新特性 本地存储---cookie localStorage sessionStorage
本地存储的作用 :避免登录网站时,用户在页面浏览时重复登录,也可以实现快速登录,一段时间内保存用户的登录效果,提高页面访问速率
在html5中提供三种数据持久化操作的方法:
1.cookie 可看作是记录简单内容的文本文件,直接绑定在html页面上。有前端设置和后端设置。有2中存储方式。不常用,难懂
cookie可以保存数据一段时间,只需要设置过期时间,过期时间到了,数据才会被删除;也可以是临时cookie/会话cookie,关闭浏览器,数据就会被删除
--------------------前端操作cookie----------------------------------------------
写入cookie:
document.cookie = 'key=value;expires = 在页面中保存的时间/过期时间戳'; 【!!前端操作cookie时,时间戳必须通过toGMTString()方法转换为标准时间才行】
读取cookie:
console.log(document.cookie);
删除cookie:
document.cookie = 'key=value;expires=当前时间戳+1'; 任何方式获取到的时间戳都要给Date对象
前端使用cookie的demo:
var date = new Date();//获取时间戳 单位是毫秒
console.log(date.getTime());//getTime()获取时间戳的毫秒数 number
var expiresss = new Date(date.getTime()+1000*1000).toGMTString();//设置过期时间戳 即缓存时间
console.log(expires);
//写入cookie
document.cookie = 'username=frank;expires='+expiresss;
//如果不删除cookie,把写入和读取cookie的代码删除后再刷新页面,cookie仍然存在,只有时间戳到期后或者手动写入代码删除cookie,cookie才会被删除 var tempArr = document.cookie.split('=');
var tempObj = {};
tempObj[tempArr[0]] = tempArr[1];
console.log(tempObj);
console.log(tempObj.username); //删除cookie
var expiresss = new Date(date.getTime()+1).toGMTString();
--------------------后端操作cookie----------------------------------------------
1.写入cookie :setcookie('key','value','expires','path');
2.获取cookie:$_COOKIE;
3.删除cookie:setcookie('key','value','expires+1','path');
setcookie('key','value','expires-1','path');
[说明: 哪个html页面访问了本php文件,就给哪个html页面添加cookie,在php中获取时间戳的方式为time(),单位是s; 前三个参数为必要参数,path为可选参数]
后端使用cookie的demo:
//<button>点我添加cookie</button>
//----------------------------------------------
<script>
(function() {
var cookie = document.cookie;
if(cookie.length != 0) {
cookie.log('已经登录,不用再显示登录按钮');
}
})(); document.querySelector('button').onclick = function() {
//Ajax给后端发送请求
var xhr = new XMLHttpRequest();//创建对象
xhr.onreadystatechange = function() {
if(xhr.readyState==4 && xhr.status==200) {
console.log(xhr.responseText);//打印后端的返回值
}
};
var formData = new FormData();//FormData()用于将数据编译成键值对,以便用XMLHttpRequest来发送数据----主要用于发送表单数据,也可用于发送带键数据
formData.append('uname','frank');//添加字段
//formDate对象的字段类型可以时Blob,File,string 如果字段类型不是Blob,也不是File,就会被转成string xhr.open('post','lesson2_cookie(server).php',true);
xhr.send(formData);
}
</script>
<?php
$username = $_POST['uname'];
$success = array('msg'=>'ok','info'=>$_POST); //设置cookie
setcookie('uname',$username,time()+60*60*24);//60s*60-->表示1h,60*60*24-->表示一天
//读取cookie echo json_encode($_COOKIE);
//删除cookie setcookie('uname','',time()-1); setcookie('key','value','expires','path');//1.写入cookie
//path指的是cookie要加载到当前域名的哪个位置 设置cookie生效的范围【只有cookie有path】
$_COOKIE;//2.获取cookie
setcookie('key','value','expires+1','path');// 3.删除cookie
setcookie('key','value','expires-1','path');// 3.删除cookie //给出反馈
$success = array('msg'=>'OK');
echo json_encode($success); ?>
2.localStorage 永久地保存数据 需要手动删除数据,数据才会消失
localStorage.setItem(key--string,value--string):缓存当前页面的停留的子页面和展开的数据,当切换出去该页面再回来的时候,展示的仍然是离开时的页面和数据。
localStorage是持久化的本地保存,只要你没有主动删掉,就会一直存在。就像一些缓存,都把APP卸载了缓存还在。
window.localStorage.setItem(key,value);//存储指定key的数据(JSON格式) window.localStorage.getItem(key);//获取指定key的数据 window.localStorage.removeItem(key);//删除指定key的数据 window.localStorage.clear();//清空所有的存储数据 // 在本地存储中只能存储字符串的数据格式,所以从本地获取过来的存储数据需要JSON.stringify()转json对象
3.sessionStorage
数据一旦被本地化后,只要页面不关闭就不会主动删除,一旦浏览器关闭后,数据就被自动删除 【在任何位置都能随便访问
sessionStorage是会话级别的本地保存,关闭浏览器数据就会消失
window.sessionStorage.setItem(key,value); //存储
window.sessionStorage.getItem(key); //读取
window.sessionStorage.removeItem(key); //删除
简单实例:
$(function(){
// 当回车时,将数据存储到本地存储中,并从本地存储读取数据,判断当前数据时正在进行的还是已经完成的,然后再放入相应的列表项里
// 在本地存储中只能存储字符串的数据格式,所以从本地获取过来的存储数据需要JSON.string()转json对象
// 数据存储在title中,给个变量判断是否已经完成 var todolist = [{title:'',done:false}]
var todolist = [
{
title: '今天要完成jquery视频的学习。',
done: false
},
{
title: '今天要健身。',
done: false
},
];
// 本地存储只能存储字符串数据格式 为了保存数据原有的格式,可以先把数组对象转化为字符串格式
var tododata = JSON.stringify(todolist);//将json对象转字符串
// 缓存当前页面的停留的子页面和展开的数据,当切换出去该页面再回来的时候,展示的仍然是离开时的页面和数据。
localStorage.setItem("todo",tododata);//设置本地存储的字符串数据
// var data = localStorage.getItem("todo");//获取被赋值后的数据,也是字符串格式
// var data=JSON.parse(data);//读取之后,要将字符串转回数据原本的数组对象格式。字符串转json对象
// console.log(typeof(data));
// console.log(data);
// console.log(data[0].title);
// 回车事件:
$(document).keydown(function(e){
// 当回车时,从本地存储获取数据,读取数据,判断数据是否已经完成,将数据放入相应的列表里,
if(e.keyCode==13){//判断用户是否按下回车键
var data = localStorage.getItem("todo");//获取被赋值后的数据,也是字符串格式
var data=JSON.parse(data);//读取之后,要将字符串转回数据原本的数组对象格式。字符串转json对象
console.log(typeof(data));
console.log(data);
console.log(data[0].title);
// 将获取到的数组对象的title赋值给p标签
$('p').text(data[0].title);
}
});
})
运用本地存储localStorage的实例:todolist https://www.cnblogs.com/677a/p/11730470.html
H5新特性 本地存储---cookie localStorage sessionStorage的更多相关文章
- 本地存储cookie,localStorage,sessionStorage
常见的前端存储有老朋友 cookie,短暂的 sessionStorage,和简单强大的localStorage 他们之间的区别有以下几点 1.. cookie在浏览器和服务器间来回传递.而sessi ...
- html5本地存储(localStorage)使用介绍
1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(application cache) indexedDB 和 webSQ ...
- (转)HTML5开发学习(2):本地存储之localStorage 、sessionStorage、globalStorage
原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(2):本地存储之localStorage ...
- web 本地存储 (localStorage、sessionStorage)
web 本地存储 (localStorage.sessionStorage,cookie) localStorage(长期储存):即使关闭浏览器数据也不会删除,除非使用localStorage.cle ...
- [web 前端] web本地存储(localStorage、sessionStorage)
cp from : https://blog.csdn.net/mjzhang1993/article/details/70820868 web 本地存储 (localStorage.sessionS ...
- web本地存储(localStorage、sessionStorage)
web 本地存储 (localStorage.sessionStorage) 说明 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:l ...
- html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
这篇文章主要介绍了html5本地存储的localstorage .本地数据库.sessionStorage简单使用示例,需要的朋友可以参考下 html5的一个非常cool的功能,就是web stora ...
- H5新特性汇总
H5新特性: 新增选择器 document.querySelector.document.querySelectorAll 拖拽释放(Drag and drop) API 媒体播放的 video 和 ...
- Cookie localStorage sessionStorage
三者的异同 特性 Cookie localStorage sessionStorage 数据的生命期 可设置失效时间,默认是关闭浏览器后失效 除非被清除,否则永久保存 仅在当前会话下(tab标签页)有 ...
随机推荐
- 洛谷 P1508 Likecloud-吃、吃、吃 题解
P1508 Likecloud-吃.吃.吃 题目背景 问世间,青春期为何物? 答曰:"甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!" 题目描述 正处在某一特定时期之中的李大水牛由于消化 ...
- 【loj2568】【APIO2016】【学习笔记 左偏树】烟花表演
题目 一棵树,\(n\)个非叶子节点,编号为\(1-n\),\(m\)个叶子节点,编号为\(n+1-n+m\) 每条边有边权,修改边权的代价为\(|a-b|\) ; 定义一个叶子的距离为到1(根节点) ...
- 47、Spark SQL核心源码深度剖析(DataFrame lazy特性、Optimizer优化策略等)
一.源码分析 1. ###入口org.apache.spark.sql/SQLContext.scala sql()方法: /** * 使用Spark执行一条SQL查询语句,将结果作为DataFram ...
- Go内置函数
append go语言中的append函数作用是在切片变量的后面追加新的数据,然后返回新的切片变量 func append(slice []Type, elems ...Type) []type sl ...
- 数据结构---公交线路提示系统05(内附读取表格+迪杰斯特拉算法Java代码)
今天做的最多的事情就是纠错了,通过添加输出语句判断错误来源: 找到错误来源: wb = new XSSFWorkbook(input);//语句创建错误 网上查询发现是jar包的问题: 下图为poi的 ...
- 【POJ2632】Crashing Robots
题目传送门 本题知识点:模拟 模拟机器人的运作过程,分别有三种功能,L 则是左转90°,R 则是右转90°,L 则是前进1格.让我们去模拟并判断它们的状态. 输入: 第一行是测试样例 第二行分别是矩形 ...
- ranger 使用外置的solr
一.solrcloud部署 1.下载部署 1).下载二进制包 #wget http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.3.0/so ...
- Oracle in不超过1000,List<String>参数拆分,代码举例
public Map<String,Map<String, Object>> getConsInfo(List<String> consIdList) { Map& ...
- HTML页面之间的参数传递
HTML 与 HTML 的跳转中如何在HTML之中实现参数的传递?主要代码如下:request为方法名称,params 为要获取的参数. function request(params) { var ...
- mysql的动态表名
create EVENT createMtpulseTable ON SCHEDULE every 1 month STARTS CURRENT_TIMESTAMP DO CALL pro_creat ...