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

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

  但是按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<select.options.length;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进行转换了。

时间: 2024-09-16 04:56:07

JS 解析url中的中文参数方法的相关文章

GET方法URL中传递中文参数乱码的解决方法_JSP编程

1.在页面中对你的URL进行编码 使用------encodeURI(你要使用的中文参数值)如:...?username"+encodeURI("小甜甜") 2.在后台通过解码来接收该中文参数 使用----String name = new String(request.getParameter("username ").getBytes("iso8859-1"),"utf-8") 3.最好不要在URL中传递中文参数

asp.net URL中包含中文参数造成乱码的解决方法_实用技巧

问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:http://www.****.com/user.aspx?id=水天,就出现大问题了: 1.从IE地址栏中直接输入这个地址,访问没错: 2.做一个静态页,其中包括这个超链接,点击访问也没错: 3.就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码. 一开始,被这个问题也搞得头大,在google了一把后,总算是把问题给搞清楚了,其实只要这个链接地址不经过任何编码传递是不会有问题的

tomcat设置成utf8,怎样确保从用户手动在浏览器里输入的url中的中文参数

问题描述 如题,tomcat必须设置成utf-8,获取的url是用户手动输入的(不是程序里写的),url里含有中文的参数,那么怎样才能在后台获取到正确的中文呢.要是tomcat不设置成utf-8,直接用默认的话,那么可以使用String(string.getBytes("ISO-8859-1"), "GBK");来解决(windows系统下),但要是换成utf的话,通过getBytes来设置charset就不行了,还请大家指点.谢谢! 解决方案 http://www

JS截取url中问号后面参数的值信息_javascript技巧

复制代码 代码如下: var url=location.search; var ename; var Request = new Object(); if(url.indexOf("?")!=-1) { var str = url.substr(1); strs= str.split("&"); for(var i=0;i { Request[strs[i].split("=")[0]]=(strs[i].split("=&qu

js获取url中的参数且参数为中文时通过js解码

 这篇文章主要介绍了url中传递中文参数的时候通过js解码,需要的朋友可以参考下 如果传递的参数是:   代码如下: <a href="${pageContext.request.contextPath}/productdisplay/productDisplay_productDisplayUI.action?pkId=${pkId}&name=${name}" style="color:white; margin-top:10px; margin-botto

JS解析URL及参数

JS解析URL及参数.如下代码: <script language="javascript" type="text/javascript">          var obj;          window.onload = function getargs() {              var args = new Object();              var query = location.search.substring(1); /

js ajax中传递中文参数处理

  ajax中传递中文参数处理代码:  代码如下   js中: send_request('http://www.45it.com /mini_do.php?username=' + encodeURI(username) + '&phone=' + encodeURI(phone)+ '&content=' + encodeURI(content)); mini_do.php中: $username = urldecode($_REQUEST[username]); $phone = u

jquery.ajax的url中传递中文乱码问题的解决方法

 本篇文章主要是对jquery.ajax的url中传递中文乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 JQuery   JQuery默认的contentType:application/x-www-form-urlencoded    这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1    ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符.   JQuery的Ajax根本没有考

JS获取URL中的参数数据

 这篇文章主要介绍了JS获取URL中的参数数据,有需要的朋友可以参考一下   代码如下: function getParam(paramName) {     paramValue = "";     isFound = false;     if (this.location.search.indexOf("?") == 0 && this.location.search.indexOf("=") > 1) {