前端jsp页面代码:
<input type="hidden" id="txtendflag"/>
js代码:
//导出
function getExport(procId) {
var lindex = layer.load('1', {
shade: [0.5, '#000'] //0.1透明度的白色背景
});
window.location.href = '${ctx}/manage/list/export?keyId=' + keyId;
var loop = setInterval(function() {//定时监听
if ($("#txtendflag").val() == "1") {
clearInterval(loop);//停止定时任务
layer.close(lindex);//关闭加载中遮罩
} else {
getendflag();
}
}, 1000);//单位毫秒 注意:如果导出页面很慢时,建议循环时间段稍长一点
}
function getendflag() {//请求session标记位
$.ajax({
type : 'post',
url: '${ctx}/manage/list/getendflag',
dataType : 'json',
success : function(res) {
$("#txtendflag").val(res.data);
},
error : function(error) {
console.log('接口不通' + error);
}
})
}
后端Java代码:
@RequestMapping(value = "/manege/list/getendflag")
@ResponseBody
public String getendflag(HttpServletRequest request) {
Object flag = request.getSession().getAttribute("endflag"); //获取结束标记*/
return toObjJson(flag);
}
@RequestMapping(value = "/manege/list/export")
@ResponseBody
public void doExportExcel(HttpServletResponse response,HttpServletRequest request,String keyId) {
request.getSession().removeAttribute("endflag");//每次导入前,清除结束标记
/******导出开始******/
//@#$%#^^^&&&&&&$$%$%$%##$@^^^$
/******导出结束*******/
request.getSession().setAttribute("endflag", "1");//设置结束标记
}