js获取当前url的中文参数

来源:互联网 发布:女人购物软件 编辑:程序博客网 时间:2024/05/16 09:40

       问题源自于大傻同学的需求:A.html的参数传给B.html。必须是在B.html中用js代码来获取该url中的中文参数。。。

     网上的类似问题:http://bbs.chinaunix.net/viewthread.php?tid=887933   未解决。

       正常情况下,我们在后台获取request传递过来的中文参数都比较好处理。但是这哥们,是直接从html页面跳转到另一个html页面中,然后当另一个html加载完后运行js来获取当前的url中的中文参数。实际上浏览器在把参数传递过来的时候,已不在是中文了,而是%2F%B0%D9%B6%C8%BF%D5%BC%E4格式的字符串了。即使url中显示的是中文,使用window.location.search.substring(1)获取的字段也是类似于%2F%B0%D9%B6%C8%BF%D5%BC%E4的字符串。

     显然到这一步为止,我们希望有一个js自带的函数把%2F%B0%D9%B6%C8%BF%D5%BC%E4这样的字符串解析了就行了。

     实际上,确实存在这样的一个函数。哈哈哈,这样问题就解决了。先对中文进行编码,然后解码。

通过解决这个问题还学了不少js的东西。

1.js控制页面跳转的方法:

Code:
  1. 第一种:   
  2.    <script language="javascript">   
  3.  window.navigate("top.jsp");   
  4.    </script>   
  5.   
  6. 第二种:   
  7.    <script language="JavaScript">   
  8.          self.location='top.htm';   
  9.    </script>   
  10. 第三种:   
  11.      <script language="javascript" type="text/javascript">   
  12.            window.location.href="login.jsp?backurl="+window.location.href;   
  13.      </script>   
  14.   
  15. 第四种:   
  16.      <script language="javascript">   
  17.  alert("返回上一页面");   
  18.  window.history.back(-1);   
  19.    </script>   
  20.   
  21. 第五种:   
  22.    <script language="javascript">   
  23.         alert("非法访问,请终止!");   
  24.         top.location='xx.jsp';   
  25.    </script>  

2.中文参数的编码和解码

http://www.w3school.com.cn/js/jsref_escape.asp

3.javascript解析url参数【把参数分离解析出来而已】

Code:
  1. <script type="text/javascript">   
  2.     var LocString=String(window.document.location.href);   
  3.        
  4.     function getQueryStr(str){   
  5.         var rs = new RegExp("(^|)"+str+"=([^/&]*)(/&|$)","gi").exec(LocString), tmp;   
  6.        
  7.         if(tmp=rs){   
  8.             return tmp[2];   
  9.         }   
  10.        
  11.         // parameter cannot be found   
  12.         return "";   
  13.     }   
  14.   
  15.       console.log(getQueryStr("parameter_name"));   
  16.    </script>   

4.常识

 Jsp页面使用URL编码传递中文参数的情况下,在参数的解析过程中会出现乱码。由于java在设计的时候考虑到了国际化的问题,在java源程序编译成字节码的时候默认使用的是UTF-8编码。而在web运用上,由于不同的浏览器向服务器发送的信息采用的编码方式不同,在由像tomcat之类的服务器解码的时候会由于编码方式的不同而产生乱码,这是一个会困扰jsp初学者很久的问题。【http://www.360doc.com/content/10/0317/10/633992_19086741.shtml】下角同学问题的解决的Demo:A.html
Code:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5.     <title>test1</title>  
  6.        
  7.        
  8.     <script type="text/javascript">  
  9.         function c(){   
  10.                
  11.             var  tdocument.form1.t.value;   
  12.             console.log(t);   
  13.             console.log(escape(t));   
  14.             console.log(unescape(t));   
  15.             self.location='xiajiao2.html?t='+escape(t);   
  16.                
  17.         }   
  18.     </script>  
  19. </head>  
  20.   
  21. <body>  
  22.     <form id="form1" name="form1" action="xiajiao2.html" method="get">  
  23.         <input type="text" id="t" name="t" />  
  24.         <input type="button" onclick="return c()" value="搜索"  />  
  25.         <br />  
  26.         中国人   
  27.     </form>  
  28. </body>  
  29. </html>  

B.html

Code:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5.     <script language="javascript" type="text/javascript" src="static/login_scr/jquery-1.3.2.js"></script>  
  6.     <title>test2</title>  
  7.        
  8.        
  9.     <script type="text/javascript">  
  10.         var LocString=String(window.document.location.href);   
  11.         function getQueryStr(str){   
  12.             var rs = new RegExp("(^|)"+str+"=([^/&]*)(/&|$)","gi").exec(LocString);   
  13.             var tmp;   
  14.             if(tmp=rs){   
  15.                 return tmp[2];   
  16.             }   
  17.             return "";   
  18.         }   
  19.         $(document).ready(function() {   
  20.             console.log(unescape(getQueryStr("t")));   
  21.             alert(unescape(getQueryStr("t")));   
  22.         //  var t=window.location.search.substring(1);   
  23.                   
  24.         });   
  25.     </script>  
  26. </head>  
  27.   
  28. <body>  
  29.   中国人   
  30.     <!--<form id="form1" action="xiajiao2.html" method="get">  
  31.         <input type="submit" onclick="return check_register()" value="搜索"  />  
  32.     </form>-->  
  33. </body>  
  34. </html>  

 

原创粉丝点击