11

我正在使用 AJAX 进行 struts 操作,一切都很好,但是 Firefox 存在问题,当我将 URL 中的参数作为请求参数传递时,如果该参数最后包含 hash(#) 符号,则 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();
4

2 回答 2

20

利用

var url = "/test/ChangePwdAjax.do?newPass="+ encodeURIComponent(valuePassword);

这会将您编码valuePassword为一个有效的 URL 组件,该组件可以作为 URL 中的查询字符串传递

另一方面,您应该使用decodeURIComponent从编码字符串中获取值

var value = decodeURIComponent(valuePasswordPassed);

要了解有关此的更多信息,请转到此处

于 2012-11-05T09:03:50.310 回答
1

当您更改数据时,您必须执行 http POST 请求。不是 GET 请求。这将自动解决您的问题,而无需对您的密码进行编码。

xmlhttp.open("POST", "/test/ChangePwdAjax.do", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("newPass=" + valuePassword);
于 2012-11-05T09:13:00.610 回答