在项目中经常遇到两个页面传值的情况,我采取的方案是通过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这个字符串里面的值进行匹配查找,都是对字符串的一些基本操作,所以学好基础,才能建造高楼大厦!