В файле JSP, у меня есть простой вид:Прослушивание отправки формы -> скачать файл событий
<form action="#" method="post" id="extract_form">
и на основе нескольких select
параметров, она возвращает файл .zip через этот кусок кода сервлет:
ServletOutputStream sos = response.getOutputStream();
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=\"" + zipFile.getName() + "\"");
-followed некоторых sos.write(byteArray);
Все это работает отлично, но время, которое требуется, чтобы создать файл почтового индекса зависит от параметра формы s, и я хотел бы отобразить всплывающее окно «Please Wait» («Подождите») в форме submit, а затем снова будет удалено автоматически, когда браузер получит .zip-файл.
У меня нет проблем с отображением всплывающего окна, но мне нелегко заставить его автоматически исчезать после получения файла! Как это сделать?
Если бы попробовал следующее:
1: Явное $.unblockUI()
в
jQuery(document).ready(function($) { ... }
бут готовности() событие не запускается после .zip файла, отправленного, т.е. .jsp не перезагружается ,
2: Решение, такое как this one. Вызывается функция обратного вызова успеха, но ZIP-файл не загружается. Я думаю, однако, что .zip-файл переносится в браузер в двоичной форме через объект ответа, переданный функции, вызванной успехом.
3: сканирование веб-страницы jQuery для прослушивания событий, но я обнаружил только при запуске действия ($('#form').submit(...)
), а не в ответе.
Почему вы не используете методы jQuery для получения и публикации? Вы можете прослушивать сделанные, неудачные и всегда события. https://api.jquery.com/jquery.get/ Когда вы отправляете запрос, вы показываете свое всплывающее окно и всегда используете метод, вы можете просто удалить его. –
@Botond, это именно то, что я пробовал, см. 2), но ответ «пойман» вызовом функции успеха и не распространяется на браузер (я думаю). –