遇到的问题: 在一个地址链接(URL)里使用 url?param1=val1¶m2=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代码改为:
**1 var param_val = encodeURIComponent("abc#xyz");**
**2 window.location="some_web_project/xxx.jsp?param_key=" + param_val;**