zoukankan      html  css  js  c++  java
  • 原生js ajax下载excel,pdf,兼容ie8

     1 /**打印包装信息 */
     2             print:function (that, data, obj) {
     3                 var deliveryCode = data.deliveryCode
     4                 //原生ajax
     5                 var xhr = new XMLHttpRequest();
     6                 //post方式请求后台的路径
     7                 xhr.open('get', window.BAOSIGHT.API.DELIVERY.PRINT_INFO+'?deliveryCode='+deliveryCode,true);
     8                 //导出的Pdf是二进制数据类型,所以设置为arraybuffer
     9                 xhr.responseType = 'arraybuffer';
    10                 //请求头(key,value),请求头可以设置多个key-value对
    11                 xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
    12                 xhr.setRequestHeader('Authorization', that.global.getLocalStorage("Authorization") );
    13                 // var formData = new FormData();
    14                 //     formData.append('deliveryCode',that.defaults.deliveryCode);
    15                 //  console.log(formData)
    16                 //返回成功,导出的Pdf文件
    17                 xhr.onload = function () {
    18                
    19                  if (this.status == 200) {
    20                   // new Blob 默认转换 blod,转arraybuffer需要增加 type
    21                   var blob = new Blob([this.response],{type: "arraybuffer"});
    22                 //   var fileName = 'lichun.pdf'
    23                   if (window.navigator && window.navigator.msSaveBlob) {
    24                    //兼容ie 下载 msSaveBlob 仅支持保存  msSaveOrOpenBlob 支持保存or代开
    25                    window.navigator.msSaveBlob(blob, fileName);
    26                   }else{
    27                    var a = document.createElement('a');
    28                    var url = window.URL.createObjectURL(blob);
    29                    a.href = url;
    30                    //设置文件名称
    31                    a.download = '包装信息.pdf';
    32                    a.click();
    33                   }
    34                  }
    35                 };
    36                 //请求的参数,json格式,后台要用json格式接收
    37                 xhr.send();
    38             },

    2.下载.excel文件

     1 export:function (e) {
     2                 var that=e.data.context
     3                 var data = JSON.parse(JSON.stringify(form.val('search_form'))),
     4                 var url = window.BAOSIGHT.API.DELIVERY.EXPORT_ORDER;
     5                 var xhr = new XMLHttpRequest();
     6                    xhr.open( 'post' , url, true );    // 也可以使用POST方式,根据接口
     7                 xhr.responseType = "blob" ;  // 返回类型blob // 如果导出为.pdf responseType='arraybuffer'
     8                 xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
     9                 xhr.setRequestHeader('Authorization', that.global.getLocalStorage("Authorization") );
    10                // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
    11                xhr.onload = function () {
    12                  // 请求完成
    13                  if ( this .status === 200) {
    14                    // 返回200
    15                    var blob = this .response;
    16                    var reader = new FileReader();
    17                    reader.readAsDataURL(blob);  // 转换为base64,可以直接放入a表情href
    18                    reader.onload = function (e) {
    19                      // 转换完成,创建一个a标签用于下载
    20                      var a = document.createElement( 'a' );
    21                      a.download = '送货单.xlsx' ;
    22                      a.href = e.target.result;
    23                      $( "body" ).append(a);  // 修复firefox中无法触发click
    24                      a.click();
    25                      $(a).remove();
    26                    }
    27                  }
    28                };
    29                // 发送ajax请求
    30                xhr.send(JSON.stringify(data))
    31             },
    欢迎转载,请注明出处
  • 相关阅读:
    【Demo 0062】文件遍历
    【Demo 0068】获取分区信息
    【Demo 0060】记录个人信息
    【Demo 0069】文件读写
    【Demo 0064】监控文件/目录变更
    【Demo 0067】文件类型关联图标
    【Demo 0065】获取被修改的文件/目录
    【Demo 0062】目录及文件基本操作
    【Demo 0061】打开与保存文件
    【Demo 0066】监控被变更文件/目录(完成端口)
  • 原文地址:https://www.cnblogs.com/time1997/p/14836195.html
Copyright © 2011-2022 走看看