利用Ajax向Servlet发送请求下载统计后的Excel文件,利用jquery.blockUI.js给予用户等待提示
来源:互联网 发布:php 中英文企业网站 编辑:程序博客网 时间:2024/05/17 02:46
在统计业务需求中,需要去实时的统计并下载Excel文件。当数据量特别大的时候,就需要给予用户提示。点击下载时界面禁止用户操作,当弹出下载窗口时允许操作。
由于后台业务逻辑,在获取数据和统计数据的过程中 耗时比较长,所以在excel文件导出的过程中加了一个 提示用户正在导出数据的等待页面 ,现在用的是jquery的插件jquery.blockUI.js 。
这个插件的主要用法就是在发送异步请求之前先 调用一下锁屏的方法:
$.blockUI({ message: '<img src="././images/WaitProcess.gif" /> 数据导出中...' });,使用户不能进行其他操作,同时还能提示用户正在导出数据; 在success回调方法中解锁: $.unblockUI();
原本现在文件直接通过超链接可以完成下载,但现在要在success回调方法中解锁: $.unblockUI(); 在url中附带几个参数,并且这些参数要是点击事件触发时的最新值,所以这里使用ajax的方式进行下载。
然而:
1.使用ajax,ajax的返回值类型是json,text,html,xml类型,或者可以说ajax的发送,接受都只能是string字符串,不能流类型,所以无法实现文件下载,强用会出现response冲突。
如果非要使用ajax的话,只能通过返回值得到生成的文件相关url。然后在回调函数里通过创建一个iframe,并设置其src值为文件url,或者一个对文件生成流的处理url,这样操作来实现文件下载且页面无刷新。
<input type="button" value="打印" name="print" onclick="download();" />
<script type="text/javascript" src="${ctx }/js/jquery.js"></script><script type="text/javascript" src="${ctx }/js/jquery.blockUI.js"></script><script type="text/javascript">function download(){ $.blockUI({message: '<img alt="" src="${ctx }/pkg/loading.gif"> 数据导出中...' }); /* 在success回调方法中解锁: $.unblockUI(); */ var fondNum = $("#fondNum").val(); var startYear = $("#startYear").val(); var endYear = $("#endYear").val(); $.ajax({ url: "${ctx }/Stat", type: "POST", cache: false, dataType : 'text', data:{fondNum:fondNum,startYear:startYear,endYear:endYear,print:"打印"}, success: function(data) { $.unblockUI(); var result = eval("(" + data + ")"); $(document.body).append("<iframe height='0' width='0' frameborder='0' src=" + result.path + "></iframe>") }, error:function(a,b,c){ alert("error"); } }); }</script>
以下是servlet:
String fondNum = request.getParameter("fondNum")int startYear = NumberUtil.getValue(request.getParameter("startYear"));int endYear = NumberUtil.getValue(request.getParameter("endYear"));String type = request.getParameter("print");if(type!= null && type.equals("打印")) { try { String path = StatPrinter.exportToExcelByYear2(...);//返回的是文件地址 PrintWriter out = response.getWriter(); out.print("{\"path\":\""+request.getContextPath() + "/file/down?file=" + path.replace("\\", "/")+"\"}"); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }}else { ......}
阅读全文
0 0
- 利用Ajax向Servlet发送请求下载统计后的Excel文件,利用jquery.blockUI.js给予用户等待提示
- 利用JQuery发送ajax请求进行站内搜索
- jquery ajax请求方式与提示用户等待处理
- 利用jQuery实现多个ajax请求等待
- 利用JQUERY实现多个AJAX请求等待
- struts2的验证码及利用jquery发送ajax请求并利用json做数据交换
- 利用JQuery的ajax请求实现文件上传
- 利用JQuery的ajax请求实现文件上传
- 利用jquery的ajax提交获得文件下载
- Ajax发送请求等待时弹出模态框等待提示
- 利用jquery的ajax实现异步请求发送数据到后台
- 提交表单,提示用户等待 ajax,jquery
- 利用Servlet实现文件的下载
- jquery.form.js 利用ajaxSubmit ajax上传Excel,
- java利用poi生成excel文件后下载本地
- 利用ajax导出Excel文件
- 利用Ajax发送请求(一)
- 利用Ajax发送请求(二)
- UNITY 开发日记/教程 俄罗斯方块 (六) 消除与堆积正方形的下落
- C#WinForm练习——点击button按钮使窗体中文本框都显示“好好学习,天天向上”
- STL学习笔记1— —STL简述
- Osgi整理
- JNI开发(一) 简单的C代码打包成SO库以及项目如何调用SO库
- 利用Ajax向Servlet发送请求下载统计后的Excel文件,利用jquery.blockUI.js给予用户等待提示
- .Net环境下RabbitMQ的安装及使用
- cf 512B
- 字体格式:ttf,woff,eot
- visual studio 12/13基础c++工程建立使用
- jdk8 list排序
- JPA @MappedSuperclass注解的使用说明
- mysql数据库操作(一)
- 数据结构之BFS(邻接表版)