[問題] 等待response才繼續執行

看板java作者 (panasonic)時間7年前 (2016/08/03 15:58), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
網路上應該有類似的文章 可是看了老半天 試了幾天還是不得其解... 因此向這邊求助 首次發文, 若有不妥的地方再行告知. 會立馬修正 謝謝 問題蠻單純的 前端post一個form讓controller執行後產生一份excel並進行下載 其中前端post資料出來後就要先鎖住畫面 等到excel準備好後才解鎖 並下載 自己這邊試過ajax 可是ajax無法處理串流回來的資料 自然不能下載 查了許多網站似乎都是說ajax無法做到download file 因此直接用js的submit做 但是這個方法又無從得知資料回來的時間 提供部分代碼 view.js (submit版) // lock ui $("#form1").attr("action","<c:url value="/export"/>"); $("#form1").submit(); // unlock ui view.js (ajax版) //lock ui $("#form1").ajaxSubmit({ url:'export', dataType: 'bytesArray', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', success: function(){ //unlock ui }, }); MyController.java @ResponseBody @RequestMapping("/export") public void export(@ModelAttribute("model") MyFormBean form ,ModelMap model ,HttpServletResponse res) throws Exception { // do something res.setContentType("application/octet-stream"); res.addHeader("Content-disposition" , "attachment;filename=" + URLEncoder.encode("MyExcel.xls", "UTF-8")); OutputStream fOut = res.getOutputStream(); workbook.write(fOut); fOut.flush(); fOut.close(); } 因為本身算是半路出家.. 許多地方都不是很了解 用字有錯誤的地方再請大大們提醒一下 立馬修正 謝謝您 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.59.250.101 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1470211133.A.55F.html

08/03 17:18, , 1F
ajax可以下載檔案(當然有些支援度問題),但是你的需求看起
08/03 17:18, 1F

08/03 17:19, , 2F
來是只要鎖住畫面到檔案準備好就好? 沒有要鎖到檔案下載好
08/03 17:19, 2F

08/03 17:21, , 3F
如果是的話我覺得拆成兩步,先用ajax叫server準備資料並回
08/03 17:21, 3F

08/03 17:21, , 4F
傳下載url,再用普通方式下載就好
08/03 17:21, 4F

08/04 14:04, , 5F
我試試看 謝謝!
08/04 14:04, 5F
文章代碼(AID): #1NeQGzLV (java)