我正在使用javascript函数提交表单,并且在javascript函数中,我指定了form.action= "Struts2 url goes here";

这是我的代码片段:

var form = document.forms['myForm'];
if (form != null) {
    var backURL = "ActionB!someMethodB.action?Bparam1=somevalue&Bparam2=somevalue";
    form.action="ActionA!someMethodA.action?Aparam1=somevalue&Aparam2=" + backURL;
    form.submit();
}


问题在于,在操作方法someMethodA中,Aparam2的值总是被backURL中的第一个&字符截断。

我尝试将backURL括在这样的form.action="ActionA!someMethodA.action?Aparam1=somevalue&Aparam2='" + backURL + "'";引号中,但没有用。这让我感到backURL的值没有被视为一个整体,而是被解析了。

我想知道是否有解决此问题的方法。

最佳答案

如果您要在网址中使用包含特殊字符的参数,则应使用urlencoded参数。

var backURL = encodeURIComponent("ActionB!someMethodB.action?Bparam1=somevalue&Bparam2=somevalue");


同样,可以在服务器上使用s:url标签构建URL的硬编码值。

var backURL = encodeURIComponent('<s:url action="ActionB" method="someMethodB"><s:param name="Bparam1" value="somevalue"/><s:param name="Bparam2" value="somevalue"/></s:url>');


在这种情况下,默认情况下&被转义为&amp;,但是浏览器通常使用转义值。

09-20 19:21