前言:
项目需求:页面上新增两个导出数据按钮,通过传参导出不同的 Excel 文件。
问题:
使用$.ajax请求接口,设置了responseType:“blob” ,可以进行文件下载,但是下载的文件不能打开。
通过以往的经验,感觉是responseType设置了没有生效,经过检索,发现 xhrFields 属性。
文心一言给出关于 xhrFields 的作用:
xhrFields 是 jQuery AJAX 请求配置中的一个选项,允许设置原生 XMLHttpRequest 对象的属性。通过 xhrFields 可以直接控制 XMLHttpRequest 对象的行为。
正文:
function exportSjflFn(){
$.ajax({
url:"/exportAPIS",
type:'get',
data:{
showName:sjfl,
startTime:startTime,
endTime:endTime
},
xhrFields: {
responseType: 'blob'
},
success:function(data,status,xhr){
//获取响应头
let filename = decodeURIComponent(xhr.getResponseHeader("Content-Disposition").split(";")[1].split("=")[1])
downLoadFile(data,filename)
}
})
}
补充:
xhr.getResponseHeader() // 获取特定响应头
xhr.getAllResponseHeaders() //获取所有响应头