ajax无法实现导出excel

用ajax导出不会弹出下载框

ajax 其实只是一个javascript中的一个组建 XmlHttpRequest, 他的作用是数据交互, 返回数据是组建内部处理的, 下载是需要浏览器识别http头的。

点击事件促发异步请求,在响应中,设置响应头和体,在用response在输出流,写到响应中,弹出下载框是设置了响应头和体,才能弹出!

所以可以用js添加iframe和form表单和input,然后调用form.submit()。最后在把这些对象删除即可。

var postDownLoadFile = function (options) {
    var config = $.extend(true, { method: 'post' }, options);
    var $iframe = $('<iframe id="down-file-iframe" />');
    var $form = $('<form target="down-file-iframe" method="' + config.method + '" />');
    $form.attr('action', config.url);
    for (var key in config.data) {
        $form.append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
    }
    $iframe.append($form);
    $(document.body).append($iframe);
    $form[0].submit();
    $iframe.remove();
}

//导出
$("#btnExport_year").on('click',
        function() {
          var param={};
          postDownLoadFile({
            url:path + '/monthlyCollection/exportExcelDoc.json',
            data:param,
            method:'post'
          });
        });
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
如果你使用 AJAX 和 PHPExcel 导出表格时遇到问题,可能是因为 PHPExcel 库不支持直接Excel 文件作为响应发送到客户端。解决方案是将 Excel 文件保存到服务器上,然后使用 AJAX 下载该文件。 下面是一些基本的步骤: 1.在服务器上创建一个 PHP 文件,例如 export.php,用于查询数据和创建 Excel 文件。 2.使用 PHPExcel 库将数据写入 Excel 文件,并将其保存在服务器上的某个位置。 3.在 export.php 文件中,使用 PHP 的 header() 函数将 Excel 文件作为响应发送到客户端。 ``` header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="export.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); ``` 4.在客户端的 JavaScript 代码中,使用 XMLHttpRequest 对象向 export.php 发送 AJAX 请求,并在成功响应时下载 Excel 文件。 ``` var xhr = new XMLHttpRequest(); xhr.open('GET', 'export.php', true); xhr.responseType = 'blob'; xhr.onload = function() { if (this.status === 200) { var blob = new Blob([this.response], { type: 'application/vnd.ms-excel' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'export.xls'; document.body.appendChild(a); a.click(); document.body.removeChild(a); } }; xhr.send(); ``` 这将在客户端创建一个下载链接,允许用户下载导出Excel 文件
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值