url传参特殊字符问题

来源:互联网 发布:宏和网络 编辑:程序博客网 时间:2024/06/05 22:52

function edit(zcname,xmname){

   var empcode='${empcode}';

   zcname=encodeURIComponent(zcname);

      location.href = "toEditZclx.do?zcname=" + zcname+"&EmpCode="+empcode;

   }

该段代码是将zcname,empcode参数使用url的方式传递到后台toEditZclx.do中作为参数使用。

如果传入的参数zcname或者empcode中存在特殊的字符,例如zcname=123&456,此时后台request.getParameter(“zcname”);接收的数据则变成了456.

解决办法

1.方法一

Java对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent

js中,你通过url传值,需要这样:

function updatePLChild(name){

 //先对参数进行编码

 name = encodeURIComponent(name);

 location.href="newLessonPlan.do?name="+name;

}

这样的话,你传的大多数带特殊符号的参数,都能在后台拿到,但是,

经过自己测试发现:

url中可能用到的特殊字符及在url中的经过编码后的值:(此表格借鉴)

#

用来标志特定的文档位置

%23

%

对特殊字符进行编码

%25

&

分隔不同的变量值对

%26

+

在变量值中表示空格

%2B

/

表示目录路径

%2F

\

表示目录路径

%5C

=

用来连接键和值

%3D

?

表示查询字符串的开始

%3F

空格

空格

%20

.

句号

%2E

:

冒号

%3A

 

假如你的参数是上方的url编码值,比如%23%25这些,那么后台接收到的值,就是其对应的字符。

比如传值"%23",接收到的值就是"#"

尽量避免此种传值的情况的产生。

 

2.方法2

使用ajax,或者其他方式传递参数。