請求(Request)的參數(Parameter)里包含特殊字符(#等)的正確處理方式


遇到一個問題

在一個地址鏈接(URL)里使用

url?param1=val1&param2=val2

的方式傳遞參數,結果在獲取參數值時發現不是當初設定的值。

具體案例

以特殊字符井號(#)為例。

部分參數值丟了

JS里設置參數

window.location="some_web_project/xxx.jsp?param_key=abc#xyz";

Java中取參數值

Sting paramVal = request.getParameter("param_key");

你會發現在 Java 中取到的值,不是設定的

abc#xyz

而是

abc

井號后面的值沒了,包括井號本身。

為什么呢?

網上查了下,URL中的井號(#)有其特殊的含義,表示位置(錨點)。

那怎么辦呢?參數里就是有特殊字符,怎么才能拿到數據呢?

解決之道

先給參數值編碼,再傳遞即可。

將上面的JS代碼改為

var param_val = encodeURIComponent("abc#xyz");
window.location="some_web_project/xxx.jsp?param_key=" + param_val;

小結

如果請求(Request)的參數(Parameter)里包含特殊字符,記得將參數值編碼

encodeURIComponent(SPECIAL_VALUE) 

原文鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM