【问题标题】:Is there another way to download file in jquery or form submit?是否有另一种方法可以在 jquery 中下载文件或表单提交?
【发布时间】:2023-03-29 12:23:01
【问题描述】:

我想通过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);

【问题讨论】:

  • 有效!!连同表格一起提交。非常感谢!

标签: java jquery jsp parameters struts2


【解决方案1】:

action 的参数可以通过两种方式传递,在 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>

【讨论】:

  • 有效!!连同表格一起提交。感谢您的确切回答(甚至输入了我的原始参数)。谢谢你的好意!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 2012-06-08
相关资源
最近更新 更多