在JSP文件中,我有這樣的簡單形式:監聽表單提交 - >文件下載事件
<form action="#" method="post" id="extract_form">
,並基於幾個select
參數,它通過這段代碼中返回一個.zip文件在Servlet:
ServletOutputStream sos = response.getOutputStream();
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=\"" + zipFile.getName() + "\"");
一些sos.write(byteArray);
所有這一切工作優秀-followed,但需要創建zip文件的時間取決於形式PARAM我想在表單提交中顯示一個「Please Wait」blockUI彈出窗口,然後當瀏覽器接收到.zip文件時,它會自動再次被刪除。
我沒有麻煩顯示彈出窗口,但我很難讓它在收到文件後自動消失!我該如何做到這一點?
如果已經嘗試了以下內容:
1:明確$.unblockUI()
在
jQuery(document).ready(function($) { ... }
- 但是就緒()事件發送.zip文件後不會被觸發,即.JSP不重裝。
2:類似this one的解決方案。成功回調函數被調用,但不會下載.zip文件。但我認爲,.zip文件是通過傳遞給函數success上的函數的響應對象以二進制形式傳遞給瀏覽器的。
3:掃描jQuery網頁中要收聽的事件,但我只發現觸發動作($('#form').submit(...)
),而不是響應。
爲什麼不使用jQuery get和post方法? 你可以聽完成,失敗和總是事件。 https://api.jquery.com/jquery.get/ 當您發送請求時,顯示彈出窗口,以及總是方法,您可以直接將其刪除。 –
@Bondond,這正是我所嘗試的,見2),但響應被成功函數調用「捕獲」並且不傳播到瀏覽器(我猜)。 –