Javascript 通行证#&引用;url请求参数中的哈希符号在Firefox中不起作用
我正在使用AJAX执行struts操作,一切正常,但Firefox存在问题,当我将URL中的参数作为请求参数传递时,如果该参数最后包含哈希(#)符号,则Firefox会删除该符号后的所有内容,并将该参数发送给action而不使用它 例如,如果我在Firefox中通过了test123#abcd,那么我在action类中只得到了test123,而不是test123#abcd,这对我的要求是不可取的。对于IE来说,它工作得很好。是否有任何方法可以提取Firefox中包含#符号的完整参数 如果我还需要发布java操作代码,请告诉我,谢谢 JS代码段Javascript 通行证#&引用;url请求参数中的哈希符号在Firefox中不起作用,javascript,ajax,firefox,xmlhttprequest,Javascript,Ajax,Firefox,Xmlhttprequest,我正在使用AJAX执行struts操作,一切正常,但Firefox存在问题,当我将URL中的参数作为请求参数传递时,如果该参数最后包含哈希(#)符号,则Firefox会删除该符号后的所有内容,并将该参数发送给action而不使用它 例如,如果我在Firefox中通过了test123#abcd,那么我在action类中只得到了test123,而不是test123#abcd,这对我的要求是不可取的。对于IE来说,它工作得很好。是否有任何方法可以提取Firefox中包含#符号的完整参数 如果我还需要发
var valuePassword=test123#abcd;
var url = "/test/ChangePwdAjax.do?newPass="+valuePassword;
var xmlHTTP = getXMLHTTPRequest();
使用
这将把您的valuePassword
编码为有效的URL组件,该组件可以作为URL中的查询字符串传递
另一方面,您应该使用decodeURIComponent
从编码字符串中获取值
var value = decodeURIComponent(valuePasswordPassed);
更改数据时,要了解更多信息,必须执行http POST请求。不是GET请求。这将自动解决您的问题,而无需对密码进行编码
xmlhttp.open("POST", "/test/ChangePwdAjax.do", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("newPass=" + valuePassword);
原因是你必须对你的数据进行编码。散列(#)在这里无效,散列以及随后的所有内容都不应该离开你的浏览器。我个人会链接到w3schools,而不是w3schools(它们倾向于生成低于标准的文档)。谢谢大家,它可以工作,早些时候,我被我的思维过程所限制,因为在IE中它工作得很好。我还想知道为什么两个浏览器的行为都不同,我同意URL查询字符串必须编码。ThanksI通过更改xmlHTTP.open(“GET”,url,true)尝试了这一点;到xmlHTTP.open(“POST”,url,true);但它是一样的。不确定我是否做得正确。但编码解决了我的目的。谢谢。@user1697113这些值不应该在url中,而应该在正文中。我会更新我的答案。
xmlhttp.open("POST", "/test/ChangePwdAjax.do", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("newPass=" + valuePassword);