最近处理了Excel导出操作是碰到的问题,Excel处理插件用的是POI。
前端通过Ajax请求,发送导出操作之后,在后台进行进行Debug跟进,都没有问题,但是就是不会弹出下载提示框。
服务器返回了response之后,客户端这边没有任何反应。
部分下载代码如下:
if(workbook !=null){ try { String fileName = "Userlog_" + String.valueOf(System.currentTimeMillis()).substring(4, 13) + ".xls"; String headStr = "attachment; filename=\"" + fileName + "\""; response.setContentType("APPLICATION/OCTET-STREAM"); response.setHeader("Content-Disposition", headStr); OutputStream out = response.getOutputStream(); workbook.write(out); } catch (IOException e) { e.printStackTrace(); }
}
参考了网上的说法,ajax请求的返回值类型为:json、html、text、xml。对于流这种类型,ajax请求无法识别,所以客户端也一直没有反应。
是否可以在ajax请求的回调函数success或者error中处理这个response,还是response到达客户端的时候,ajax无法识别,导致回调函数无法触发。
后面改用window.location.href="";这种请求可以解决这个问题。类似的还有window.open;window.url等。
记之。