在项目中经常遇到两个页面传值的情况,我采取的方案是通过url后面加参数,也就是get方式传值。
这个方式的优点是:传值、获取很方便。
缺点是:1. 把参数都暴露在浏览器中了,一些敏感信息不建议这样传;
2. 要是有捣蛋的人把浏览器的地址后缀改改,那样参数就有可能被改了;
3. 每个浏览器都有个最大的长度限制,其中ie最少,为2048 字符。
好了,回归正题,当用get方式传值的时候,需要获取一些需要值,有两个方案,有一个是自己写的:
方案一:
1 function getQueryString (name) { 2 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"), 3 r = window.location.search.substr(1).match(reg); 4 if (r != null) { 5 return unescape(r[2]); 6 } 7 return ''; 8 }
这个方案是用正则匹配name的值。
方案二:
1 function getUrlParam(name) { 2 var url = window.location.herf.search.split('?')[1], 3 arrs = url.split('&'); 4 for(var i=0; i<arrs.length; i++) { 5 if(arrs[i].split('=')[0] === name) { 6 return arrs[i].split('=')[1]; 7 } 8 } 9 return ''; 10 }
这个方案是通过字符串分割,加上for循环实现。
总结:原理其实都是对url这个字符串里面的值进行匹配查找,都是对字符串的一些基本操作,所以学好基础,才能建造高楼大厦!