Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通行证#&引用;url请求参数中的哈希符号在Firefox中不起作用_Javascript_Ajax_Firefox_Xmlhttprequest - Fatal编程技术网

Javascript 通行证#&引用;url请求参数中的哈希符号在Firefox中不起作用

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中包含#符号的完整参数 如果我还需要发

我正在使用AJAX执行struts操作,一切正常,但Firefox存在问题,当我将URL中的参数作为请求参数传递时,如果该参数最后包含哈希(#)符号,则Firefox会删除该符号后的所有内容,并将该参数发送给action而不使用它

例如,如果我在Firefox中通过了test123#abcd,那么我在action类中只得到了test123,而不是test123#abcd,这对我的要求是不可取的。对于IE来说,它工作得很好。是否有任何方法可以提取Firefox中包含#符号的完整参数

如果我还需要发布java操作代码,请告诉我,谢谢

JS代码段

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