1

我想通过window.open(url)方法下载文件,但是参数太多以至于操作无法接收它们。是否有一些解决方案可以在 jQuery 中或通过表单提交来解决?

var url = "${path}/MaterialStockedAnalysisExport.action?type=byCompany";
url += "&startMonth=" + startMonth + "&endMonth=" + endMonth + "&materialStr=" +
    escape(encodeURIComponent(materialStr))  + "&companyStr=" + 
    escape(encodeURIComponent(companyStr));
alert(url);
window.open(url);
4

1 回答 1

1

动作的参数可以通过两种方式传递,在 servlet 技术中是 http GET 或 POST 请求。但是由于导航栏的某些服务器或浏览器限制,您无法在一个请求中传递所有这些。解决问题的方法是制作表单hidden输入字段,并提交表单。

<s:set var="myPath">${path}</s:set>  
<s:url var="myUrl" namespace="%{#myPath}" action="MaterialStockedAnalysisExport" />
<s:form id="myForm" action="%{myUrl}" method="POST">
  <s:hidden name="type"/>
  <s:hidden name="startMonth"/>
  <s:hidden name="endMonth"/>
  <s:hidden name="materialStr"/>
  <s:hidden name="companyStr"/>
  <s:a id="myLink" href="#">Export</s:a>
  <script type="text/javascript">
    $(document).ready(function() {
      $("#myLink").click(function(event) {
        event.preventDefault();
        $('input[name=type]').val('byCompany');
        $('input[name=startMonth]').val(startMonth);
        $('input[name=startMonth]').val(endMonth );
        $('input[name=materialStr]').val(ematerialStr);
        $('input[name=companyStr]').val(companyStr);
        $("#myForm").submit();
      });
    });
  </script>
</s:form>
于 2013-08-30T07:11:35.273 回答