AJax技术

ajax实现下载功能

字号+ 作者:H5之家 来源:H5之家 2017-03-02 11:01 我要评论( )

适用场景:由于点击按钮下载excel响应时间过长,此时间段加入加载样式(灰色层、加载动画); 浏览器弹出下载框后,上面的加载样式去掉。 方 法 : 使用jquery.f

> 编程开发 > AJAX相关 >

ajax实现下载功能 2017-02-26 13:16 出处:清屏网 人气: 

适用场景:由于点击按钮下载excel响应时间过长,此时间段加入加载样式(灰色层、加载动画);

浏览器弹出下载框后,上面的加载样式去掉。

 方     法 : 使用jquery.fileDownload.js插件导出excel;

弹出框样式引用layer.js框架;

实现过程:

【前台部分】

①头部引入文件:

<script type="text/javascript" src="js/jquery-2.1.3.min.js"></script>

<script type="text/javascript" src="layer/layer.js"></script>

<script type="text/javascript" src="js/jquery.fileDownload.js"></script>

②js代码

$("#btn").click(function() {

var index = layer.load(1, {

shade: [0.5, '#000'] //0.5透明度的黑色背景

});

$.fileDownload('index.php', {

httpMethod: 'POST',

data: $('#form1').serialize(),

successCallback: function() {

layer.closeAll('loading');

},

failCallback: function(responseHtml, url) {

layer.msg('加载中..');

}

});

});

【后台部分(php)】

关键在于:header('Set-Cookie: fileDownload=true; path=/');

因为使回调函数successCallback和failCallback起作用,所以在后台代码中返回Cookie(上面一行代码即可实现)。

(php完整代码如下)

<?php

error_reporting(E_ALL);

date_default_timezone_set('Asia/Shanghai');

require_once './Classes/PHPExcel.php';

$data=array(

0=>array(

'id'=>1001,

'username'=>'张飞',

'password'=>'123456',

'address'=>'三国时高老庄250巷101室'

),

1=>array(

'id'=>1002,

'username'=>'关羽',

'password'=>'123456',

'address'=>'三国时花果山'

),

2=>array(

'id'=>1003,

'username'=>'曹操',

'password'=>'123456',

'address'=>'延安西路2055弄3号'

),

3=>array(

'id'=>1004,

'username'=>'刘备',

'password'=>'654321',

'address'=>'愚园路188号3309室'

)

);

$objPHPExcel=new PHPExcel();

$objPHPExcel->getProperties()->setCreator('')

->setLastModifiedBy('')

->setTitle('Office 2007 XLSX Document')

->setSubject('Office 2007 XLSX Document')

->setDescription('Document for Office 2007 XLSX, generated using PHP classes.')

->setKeywords('office 2007 openxml php')

->setCategory('Result file');

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue('A1','ID')

->setCellValue('B1','用户名')

->setCellValue('C1','密码')

->setCellValue('D1','地址');

$i=2;

foreach($data as $k=>$v){

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue('A'.$i,$v['id'])

->setCellValue('B'.$i,$v['username'])

->setCellValue('C'.$i,$v['password'])

->setCellValue('D'.$i,$v['address']);

$i++;

}

$objPHPExcel->getActiveSheet()->setTitle('三年级2班');

$objPHPExcel->setActiveSheetIndex(0);

$filename=urlencode('学生信息统计表').'_'.date('Y-m-dHis');

//生成xlsx文件

/*

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');

header('Cache-Control: max-age=0');

$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');

*/

//生成xls文件

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment;filename="'.$filename.'.xls"');

header('Cache-Control: max-age=0');

header('Set-Cookie: fileDownload=true; path=/');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

$objWriter->save('php://output');

exit;

分享给小伙伴们:

本文标签: ajax/">ajax

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

  • 本类最热新闻

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 《电脑编程技巧与维护》2014年19期

      《电脑编程技巧与维护》2014年19期

      2017-03-02 12:05

    • 基于Blod的ajax进度条下载实现

      基于Blod的ajax进度条下载实现

      2017-03-01 13:03

    • PHP Ajax JavaScript Json获取天气信息实现代码_php实例_脚本之家

      PHP Ajax JavaScript Json获取天气信息实现代码_php实例_脚本之家

      2017-03-01 12:02

    • Ajax框架使用基础教程

      Ajax框架使用基础教程

      2017-03-01 09:00

    网友点评
    t