在前端开发中,一个B页面需要使用另一个页面A中的变量时,通常采用两种方式,url传参或者本地存储并获取变量的值。
-
使用url传参,当A页面跳转至B页面时,将变量值拼接在url后面,B页面可以使用封装的函数获取url中拼接的变量值。例如:
A页面代码:window.location.href = B.html?uid=1000;
B页面代码:
function GetRequest(){ var url = window.location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for(var i = 0; i < strs.length; i ++) { theRequest[strs[i].split("=")[0]]=decodeURI(strs[i].split("=")[1]); } } return theRequest; } //调用方式 var Request = new Object(); Request = GetRequest(); var uid = Request['uid']; //获取到了url中uid的值1000 另外一种方式,比上面的要好用一些 function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i"); var r = window.location.search.substr(1).match(reg); if (r!=null) return (r[2]); return null; } var uid= GetQueryString('uid');
-
使用本地存储,A页面需要将变量值存储在本地,B页面去本地读取数据,就可以使用这个变量。
当A页面与B页面之间没有直接的跳转关系时,使用url传参的方式,就不是很好用了。这种情况下,可以采用本地存储的方式。- cookie的使用在另一篇博客中有详细的介绍,附上链接:前端开发中的cookie使用总结。
-
localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用,除非用户手动删除,例如清除缓存数据。
localStorage使用方式如下:
A页面:// 写入数据 localStorage.setItem('uid','1000'); //将变量uid(值为1000)存储至本地
B页面:
// 读取数据 localStorage.getItem('uid'); //获取本地存储中uid的值(1000)
数据的删除:
//删除某个键值对 localStorage.removeItem('uid'); //清除localStorage的所有内容 localStorage.clear();
-
sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
sessionStorage用法与localStorage相同,只需将localStorage换为sessionStorage即可。例如:sessionStorage.setItem(‘uid’,’1000’);
-
其他注意事项:
1.localStorage只支持string类型的存储,所以当我们需要把JSON存入localStorage中时,需要使用JSON.stringify(),将JSON转换为JSON字符串。
例如:var data={ username:'zzyn', uid:'100000' }; var strData=JSON.stringify(data); localStorage.setItem("data",strData);
2.读取数据之后,要将JSON字符串转换为JSON对象,利用JSON.parse()方法。
var data = localStorage.getItem('data'); var dataObj = JSON.parse(data);