Как использовать jquery для динамической загрузки и удаления файлов из сервлета - PullRequest
0 голосов
/ 30 апреля 2010

Можно ли jquery $ .get () вызвать сервлет и использовать его для загрузки файла или обновления страницы без перезагрузки страницы? (Или, в принципе, могу ли я загрузить файл без перезагрузки страницы?)

Например, я использую сервлет, который либо возвращает файл для загрузки 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>

Решение В соответствии с предложением ниже, я изменил функцию отправки, чтобы загрузить сервлет напрямую:

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 ]

3 голосов
/ 30 апреля 2010

На самом деле, вы пытались просто загрузить файл для загрузки? Большинство браузеров обнаружат, что это файл, и не уйдут со страницы. Они просто покажут диалоговое окно загрузки.

0 голосов
/ 30 апреля 2010

Сделайте отправку в крошечном фрейме. Не самое красивое решение, но оно зависит от проблем, с которыми вы работаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...