原生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 },
欢迎转载,请注明出处