首先,我尝试了许多使用Jquery / javascript的方法,因此我能够更改表单的操作,但无法动态添加参数:
<form id="rfForm" name="rfForm" action="./">
<input type="hidden" id="sessionKey" name="sessionKey"></input>
<button id="downloadRF" style="visibility:hidden">Download</button>
</form>
现在我有一个javascript函数 getAllParams(),它将动态计算一些参数并将其值返回为字符串,如:cefId = -1&amp; cefMilestoneId = 4304&amp; dt = 12/31/2016&amp; ; stDate = 01/01/2016
$("#downloadRF").on("click", function(e){
e.preventDefault();
var url = "./downloadFASReport.action";
$("#rfForm").attr('action',url+getAllParams());
$("#rfForm").submit();
});
现在在此表单提交之前,如果我在chrome中调试:
>document.getElementById('rfForm').action
www.example.com/downloadFASReport.action?cefId=-1&cefMilestoneId=4304&dt=12/31/2016&stDate=01/01/2016
但在实际的Url调用中,它不会添加任何参数,而它所点击的Url只是:www.example.com/downloadFASReport.action?
它是如何被覆盖的,是否有解决方案?我不能做一个ajax调用,因为我必须生成并下载一些excel /二进制文件(我无法存储在服务器上)。
同时 我尝试了一个隐藏的文本字段,然后在表单提交之前将所有这些参数(cefId = -1&amp; cefMilestoneId = ....)作为字符串附加到它,但在表单提交期间,它以unicode方式编码所有内容,因为它很好假设所有文本参数都是文本值。