不用说,先从效果图说起:。
点击导出实现。
点击导出。
完成统计后
点击确定。
下面来谈谈实现的思路:前面导出操作简单,从第二个导出操作开始:点击'确定'调用exportCsv函数复制代码代码如下:a类=' on ' href=' JAVAScript : export CSv();'全身长的导出/em/aexportCvs函数如下函数exportCsv(){ //清除等待的转动圈$("#正在加载")。html(" ");//弹出统计总数对话框,函数在后面给出定义tip();//ajax请求总数$.帖子('?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回显WEB _ URL?/index.php?q=online ea/get where count ' search _ uri,function(JSON){ var return _ arr=eval('(' JSON ')');var num=return _ arr[' total '];var process num=return _ arr[' process num '];if(num==0){ poptip.title('系统消息');poptip.content('查询结果为空,不能进行数据导出');} else { pop tip。close();for(return _ arr[' cntarr ']中的var I){ if(return _ arr[' cntarr '][I]!=0){ count _ arr[I]=return _ arr[' cntarr '][I];} } var ii=0;for(count _ arr中的var I){ type _ arr[ii]=I;}//当数据不为空的时候弹出是否到处框exportcsvconfim(num,process num);} });}//弹出确认下载exportCsvConfirm函数函数exportcsvconfim(num,processnum){ var msg='需要导出的数据有span style=' color : red ' ' num '/span行,可能会占用您较多时间来进行导出br /您还需要继续吗?//提示是否继续$.dialog.confirm(msg,function(){ $(“# loading”)).html(" ");processed _ count=0;索引=1;赢了$('#process_bg ').隐藏()。宽度(' 0% ')。show();赢了$('#process_num ').html(' 0 ');$.dialog.through({ title: '数据导出进度,内容:胜出。文件。getelementbyid(' process bar '),lock: true,opacity: ' .1 ' },function(){ window。位置。重载();});//当继续的时候赢了$('#progress_info ').显示()。文本('正在导出数据,请耐心等待,请勿关闭窗口.');//开始执行导出操作excel_export2(num,进程编号);});}关键函数excel_export2队列请求,首先会在前面定义全局变量复制代码代码如下:var search_uri='?php echo $ uri?定义变量事件='?php echo $事件;';var progress _ count=0;//已处理的数据条数定义变量指数=1;var iii=0;var Ajax标记=1;var win=$ .dialog.parent//顶层页面窗户对象var count_arr=新数组(?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回声计数($ this-tables););var type _ arr=new Array();我们要定义全局变量指数和三、ajaxmark,索引主要用于对一个表数据太多的时候进行分批导出,三用来控制队列循环,ajaxmark用来判断前一个请求是否执行成功了,成功的话在执行下面的请求复制代码代码如下:函数excel_export2(num,processnum){ //获取table type table type=type _ arr[iii];//获取总数num=count _ arr[table type];//判断是否数组是否执行完毕if(类型为(table type)=' undefined '类型为(num)=' undefined '){ return false;} //判断是否有上一个创建交互式、快速动态网页应用的网页开发技术请求是否完成if(Ajax标记==1){ index=1;//将创建交互式、快速动态网页应用的网页开发技术请求标记为未执行完成Ajax标记=2;//执行创建交互式、快速动态网页应用的网页开发技术请求,函数在后面给出retrun _ var=excel _ export _ Ajax(index,num,processnum,table type);//判断函数返回if(类型为(retrun _ var)=' undefined '){//将罗马数字3自增,执行下一个数组数据//递归调用自己excel_export2(num,进程编号);如果(iii)100 {返回false}//当创建交互式、快速动态网页应用的网页开发技术返回成功的时候,返回。
} else if(retrun _ var==' success '){ return false;}返回false } else {//setTimeout(excel _ export 2(num,processnum),3000);//SetInterval(_ excel _ export 2(num,processnum),3000);//每隔3秒检查是否创建交互式、快速动态网页应用的网页开发技术请求结束,这里settimeout不能传递参数,只能通过_excel_export2这种形式setTimeout(_excel_export2(num,processnum),3000);}}function _excel_export2(num,process num){ return function(){ excel _ export 2(num,process num);}}//excel_export_ajax函数执行导出/* AJAX,递归调用*/function excel _ export _ Ajax(index,num,processnum,tabletype){ $ .ajax({ url: '?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回显WEB _ URL?/index.php?q=online ea/export CSV ' search _ uri '/index/' index '/total/' num '/tabletype/' tabletype,type: 'GET ',success:函数(数据){//执行次数自增已处理_计数;//当一个表数据太多,分批导出指数;//更新进度条//判断进度var process _ num=ParSeint((processed _ count/process num)* 100);if(process _ num=100){ process _ num=100;}//跟新进度条update _ process(process _ num);//alert(processed _ count '-' process num);//当执行结束if(processed _ count=process num){//压缩文件backup _ compress();返回"成功";}如果(数据=='0'){//将创建交互式、快速动态网页应用的网页开发技术请求标记为执行完毕,执行下一个全球资源定位器(统一资源定位符)请求Ajax标记=1;返回false}当一个表的数据未导出完成的时候,会循环调用自己去请求,php函数或判断是否到处完成,导出完成返回0 ,未完成返回1 excel_export_ajax(索引、num、processnum、表类型);} });}/* 备份文件执行压缩*/function backup _ compress(){ win .$('#progress_info ').文本('正在生成压缩文件.');$.ajax({ url: '?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回显WEB _ URL?/index.php?q=在线ea/压缩/事件/?php echo $事件;',成功:函数(味精){赢了.$('#process_bg ').显示()。宽度(' 100% ');赢了$('#process_num ').html(' 100 ');赢了$('#progress_info ').html(")导出数据完成a href=' msg ' style=' color : # 006699;文本修饰:下划线'下载文件/a ');} });}/* 更新进度条*/函数update _ process(process _ num){ win .$('#process_bg ').显示()。宽度(process _ num " %赢了$('#process_num ').html(process _ num);}下面附上源码,咳咳相关服务器端编程语言(专业超文本预处理器的缩写)程序大家自己脑补下吧复制代码代码如下:脚本类型=' text/JavaScript '语言=' JavaScript ' var search _ uri='?php echo $ uri?定义变量事件='?php echo $事件;var progress _ count=0;//已处理的数据条数定义变量指数=1;var iii=0;var Ajax标记=1;var win=$ .dialog.parent//顶层页面窗户对象var count_arr=新数组(?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回声计数($ this-tables););var type _ arr=new Array();函数export CSV(){ $(“# loading”).html(" ");tip();$.帖子('?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回显WEB _ URL?/index.php?q=online ea/get where count ' search _ uri,function(JSON){ var return _ arr=eval('(' JSON ')');var num=return _ arr[' total '];var process num=return _ arr[' process num '];if(num==0){ poptip.title('系统消息');poptip.content('查询结果为空,不能进行数据导出');} else { pop tip。close();for(return _ arr[' cntarr ']中的var I){ if(return _ arr[' cntarr '][I]!=0){ count _ arr[I]=return _ arr[' cntarr '][I];} } var ii=0;for(count _ arr中的var I){ type _ arr[ii]=I;} exportcsvconfim(编号,进程编号);} });}函数exportcsvconfim(num,processnum){ var msg='需要导出的数据有span style=' color : red ' ' num '/span行,可能会占用您较多时间来进行导出。
br /您还需要继续吗?$.dialog.confirm(msg,function(){ $(“# loading”)).html(" ");processed _ count=0;索引=1;赢了$('#process_bg ').隐藏()。宽度(' 0% ')。show();赢了$('#process_num ').html(' 0 ');$.dialog.through({ title: '数据导出进度,内容:胜出。文件。getelementbyid(' process bar '),lock: true,opacity: ' .1 ' },function(){ window。位置。重载();});赢了$('#progress_info ').显示()。文本('正在导出数据,请耐心等待,请勿关闭窗口.');excel_export2(num,进程编号);});}函数excel_export2(num,process num){ table type=type _ arr[iii];num=count _ arr[table type];if(类型为(table type)=' undefined '类型为(num)=' undefined '){ return false;} if(Ajax标记==1){ index=1;Ajax标记=2;retrun _ var=excel _ export _ Ajax(index,num,processnum,table type);if(类型为(retrun _ var)=' undefined '){ iii;excel_export2(num,进程编号);如果(iii)100 {返回false} } else if(retrun _ var==' success '){ return false;}返回false } else {//setTimeout(excel _ export 2(num,processnum),3000);//SetInterval(_ excel _ export 2(num,processnum),3000);setTimeout(_excel_export2(num,processnum),3000);}}function _excel_export2(num,process num){ return function(){ excel _ export 2(num,process num);}}/* 执行导出*/function excel_export(num,process num){ var retrun _ var=' ss ';for(count _ arr中的var I){ num=count _ arr[I];表格类型=I;索引=1;retrun _ var=excel _ export _ Ajax(index,num,processnum,table type);if(类型为(retrun _ var)=' undefined '){//alert(' xxxx ');setTimeout(函数(){ exit},5000);} if(retrun _ var==' success '){ return false;} }返回false}/* AJAX,递归调用*/function excel _ export _ Ajax(index,num,processnum,tabletype){ $ .ajax({ url: '?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回显WEB _ URL?/index.php?q=online ea/export CSV ' search _ uri '/index/' index '/total/' num '/table type/' table type,type: 'GET ',success:函数(数据){已处理_计数指数;//更新进度条var process _ num=ParSeint((processed _ count/process num)* 100);if(process _ num=100){ process _ num=100;} update _ process(process _ num);//alert(processed _ count '-' process num);if(processed _ count=process num){ backup _ compress();返回"成功";}如果(数据==' 0 '){ Ajax标记=1;返回false} excel_export_ajax(index、num、processnum、table类型);} });}/* 更新进度条*/函数update _ process(process _ num){ win .$('#process_bg ').显示()。宽度(process _ num " %赢了$('#process_num ').html(process _ num);}/* 备份文件执行压缩*/function backup _ compress(){ win .$('#progress_info ').文本('正在生成压缩文件.');$.ajax({ url: '?服务器端编程语言(Professional Hypertext Preprocessor的缩写)回显WEB _ URL?/index.php?q=在线ea/压缩/事件/?php echo $事件;成功:函数(味精){赢了.$('#process_bg ').显示()。宽度(' 100% ');赢了$('#process_num ').html(' 100 ');赢了$('#progress_info ').html(")导出数据完成a href=' msg ' style=' color : # 006699;文本修饰:下划线'下载文件/a ');} });}函数提示(){ pop tip=$。对话。通过({ id : ' tip ',title: '系统消息,content: '正在统计总数,请勿关闭窗口img src=' http :http://图像。cn博客。com/loading _ s . gif '/',width: 300,height: 100,icon: 'system ',lock: true,opacity:1 },function(){ window。位置。重载();});流行小贴士。show();}函数packetDelete(url,msg){ $.dialog.confirm(msg,function () { $).post(url,函数(数据){ if(数据==' 1 ')} { $ .对话框('删除成功,function(){ window。位置。重载();});} else if(数据=='2'){ $ .对话框('删除失败,function(){ window。位置。重载();});} else if(数据=='3'){ $ .对话框('文件不存在,或者已删除,function(){ window。位置。重载();});} });});}/脚本