我正在使用AJAX进行Struts动作,一切都很好但是Firefox有问题,当我在URL中传递参数作为请求参数时,如果该参数最后包含哈希(#)符号,那么firefox会在该符号后删除所有内容,并在没有它的情况下将该参数发送到操作。
例如,如果我在Firefox中传递test123#abcd,那么我在动作类中只得到test123而不是test123#abcd,这对我的要求是不可取的。对于IE它完全正常工作。有什么方法可以用我可以在Firefox中提取包括#符号的完整参数。
如果我还需要发布java动作代码,请告诉我,谢谢。
JS代码段
var valuePassword=test123#abcd;
var url = "/test/ChangePwdAjax.do?newPass="+valuePassword;
var xmlHTTP = getXMLHTTPRequest();
答案 0 :(得分:15)
使用
var url = "/test/ChangePwdAjax.do?newPass="+ encodeURIComponent(valuePassword);
这会将您的valuePassword
编码为有效的网址组件,该组件可以作为网址中的查询字符串传递
另一方面,您应该使用decodeURIComponent
从编码字符串中获取值
var value = decodeURIComponent(valuePasswordPassed);
了解有关此Go here
的更多信息答案 1 :(得分:1)
更改数据时,您必须执行http POST请求。不是GET请求。这将自动解决您的问题,而无需对密码进行编码。
xmlhttp.open("POST", "/test/ChangePwdAjax.do", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("newPass=" + valuePassword);