我如何使用jquery下载&从servlet动态删除文件

时间:2010-04-29 20:31:12

标签: jquery ajax servlets

是否可以通过jquery $ .get()调用servlet并使用它来下载文件或更新页面而无需重新加载页面? (或者更基本的是,我可以在不重新加载页面的情况下下载文件吗?)

例如,我正在使用一个servlet,它返回一个文件来下载mimetype“application / octet-stream”,或者在“text / html”类型的页面中返回要更新的文本。

我可以用提交写一个表单,但然后重新加载页面,所以我一直在尝试使用$ .get()......但下载不起作用。

<script type="text/javascript">
 jQuery(document).ready(function(){ 
   $("#handleFileOptions button").button();
  });

  function handleFilesSubmit(requestType)
  {
     $.get('FileServlet', {filename: $('#radioFileList input:radio:checked').button("widget").text(), requestType: requestType}, function(data){ ...?... });
   }
</script>

在html中:

<div id = "handleFiles">
 <div id ="radioFileList">
   <div id="radioFileList">
     <input value="file0.txt" type="radio" id="fileitem0><label for="fileitem0">file0.txt</label>
     <input value="file1.txt" type="radio" id="fileitem1><label for="fileitem0">file1.txt</label>
   </div>
 </div>
 <div id="handleFileOptions">
   <button id="handleFileOption0" onclick="handleFilesSubmit('Download')">Download</button>
   <button id="handleFileOption1" onclick="handleFilesSubmit('Delete')">Delete</button>
 </div>
</div>

解决方案根据以下建议,我更改了提交功能以直接加载servlet:

function handleFilesSubmit(requestType)
{
  if(requestType == "Download"){
     window.location.replace("FileServlet?filename="+$('#radioFileList input:radio:checked').button("widget").text()+"&requestType="+requestType);
  }
  else {     
     $.get('FileServlet', {filename: $('#radioFileList input:radio:checked').button("widget").text(), requestType: requestType}, function(data){ ...?... });
  }
}

2 个答案:

答案 0 :(得分:3)

实际上,您是否尝试过将文件加载下载?大多数浏览器会检测到它是一个文件,而不是离开页面。他们只会显示下载对话框。

答案 1 :(得分:0)

在微小的iframe中提交。不是最漂亮的解决方案,但它可以解决您正在处理的问题。