在url的请求参数中传递“#”哈希符号在Firefox中不起作用

时间:2012-11-05 09:01:14

标签: javascript ajax firefox xmlhttprequest

我正在使用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();

2 个答案:

答案 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);