1. 程式人生 > >url傳參特殊字元問題

url傳參特殊字元問題

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,或者其他方式傳遞引數。