2013-08-29 64 views
1
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); 

我想通過window.open(url)方法下載文件,但參數非常多,動作無法接收。有沒有解決方案在jQuery中或通過表單提交?是否有另一種方式來下載jquery或表單提交文件?

+0

它的工作原理!與表格一起提交。非常感謝你! – TreasureNow

回答

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> 
+0

它的工作原理!與表格一起提交。感謝您的確切答案(甚至輸入了我的原始參數)。謝謝你的好心! – TreasureNow

相關問題