一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

JS 解析url中的中文参数方法

时间:2016-08-02 编辑:简简单单 来源:一聚教程网

在浏览器中显示的地址是这样的:

  但是按F12调试的时候的地址却变化掉了:

这个肯定是是因为浏览器对url路径默认编码了。这个问题是在我们去取值的时候,得到的就是后面那一大串稀奇古怪的东西。得不到我们想要的值。怎么办呢?这里写出来的只是自己的解决方法,也许不能通用,跟大家分享下,有更好的方法,告我一声。

//得到url中的值

function request(paras){
    var url = location.href; 
    var paraString = url.substring(url.indexOf("?")+1,url.length).split("&"); 
    var paraObj = {};
    for (var i=0; j=paraString[i]; i++){ 
        paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); 
    } 
    var returnValue = paraObj[paras.toLowerCase()];
    if(typeof(returnValue)=="undefined"){ 
        return ""; 
    }else{ 
        return returnValue; 
    }
}
  function getHys(){
   if(request('hys') !=''){
//decodeURL 将传递方的中文又解码

var hys=decodeURI(request('hys'));
   var select =document.getElementById('nybgs');
   var selectValue="";
   for(var i=0;i    selectValue=select.options[i].value;
   if(document.getElementById('nybgs').options[i].value==hys){
    document.getElementById('nybgs').selectedIndex = i;
             }
           }
       }
    }

request方法是取地址中的参数的方法,decodeURI()方法就是将传递方的中文又解码。

在火狐和360和IE8中测试过,都没问题。

下面介绍一下其他办法:

正则表达式方法:

先编码传递参数:

var pmt = 'sensor='+ encodeURI(encodeURI(sensor))+'&device='+encodeURI(encodeURI(device))+'&instrument='; 
            pmt += encodeURI(encodeURI(instrument))+'&n='+n+'&addDate='+addDate; 
              
            top.location.href = 'jsp/print/diagnosticAnaPrint.jsp?'+pmt;


接收到参数:

//获取URL参数
    function GetRequest() {
       var url = 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]]=unescape(strs[i].split("=")[1]);
          }
       }
       return theRequest;
    }

调用:

 var sensor;//测点 
 sensor = decodeURI(decodeURI(Request['sensor']));

function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}

这样调用:

alert(GetQueryString("参数名1"));
alert(GetQueryString("参数名2"));
alert(GetQueryString("参数名3"));

总结,对于url参数我们了用英文吧,如中文可以转换成拼音来进行处理,当然最差的办法就是urlencode进行转换了。

热门栏目