js实现常用的功能之获取url参数

来源:互联网 发布:网络接口分线器 编辑:程序博客网 时间:2024/05/16 14:09

一:js获取URL参数

通常情况下,我们参数都会传递到后台,然后jsp获取。但是有时候我们只是希望在jsp之间传递参数,并不想一个简单的数值传过去传过来。我们总是希望用最简单的方式实现预想的功能。

参考网上的案例,结合自己的实际需求,有了以下的实现(带多个参数),其实就是一个总结,自己以后好复习:

function  getParam(){
   var url = location.search; //获取url中"?"符后的字串
   var Obj = new Object();
   if (url.indexOf("?") != -1) {
    var str = url.substr(1);
    strs = str.split("&");
    for(var i = 0; i < strs.length; i ++) { 
     Obj[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
    }
   }
   return Obj; 
  }

此时的对象Obj里有多个参数,获取时可以这样:

比如的URL是:"${ctx}/mongodb/server/kbox?kid=${device.id}&type=2"

var requestValue = getParam();

想获取那个参数对应的值:
var deviceytpe =requestValue['type'];//获取url地址中的参数type的值,想获取kid的值,替换type即可.


但是后来,当我把type的值换成中文(我的编码是utf-8),就发现出现了乱码。百度了半天也没成功,最后发现问题出现在:

 Obj[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); 中。

我的成功代码就是:去掉unescape,换成:

 Obj[strs[i].split("=")[0]]=strs[i].split("=")[1];

然后在var deviceytpe =requestValue['type']后加一次编码:

deviceytpe = decodeURIComponent(deviceytpe);

这样获取的devicetype就是中文的了。

如果是其它编码形式的,只要在上文中的红色部分修改即可



0 0