get方法获取导出excel--后台导出
get调取接口需要传数组的时候如果和post方法一样直接传个数组的话,会变成&aa[]=1&aa[]=2&aa[]=3基本上差不多应该是这样的结果,导致你调取接口的时候报400啥的
正常的样式应该是&aa=1,2,3这样
问题:vue项目中,用axios封装请求数据时,get请求传递参数为数组时,get拼接url并不能把参数正确的传递过去,
解决:get传参需要前面自己转一下传参的格式
最初错误传参
转换传参格式
axios.get('/gateway/xxx', { params: { ID: 001, provincesData: provinces+ '', } }) // 在参数后面加上( + ''),即可把数组变成字符串 // 请求变成 '.../user?ID=001&provincesData=1,2,3
所以最简单的方法直接后面填(+“”)变成string类型
接下来就是导出了
后台掉接口,返回一大串乱七八糟的东西反正看不懂就对了
接下来砸门需要给这个东西进行处理
data就是后台返回来的着一大长串乱七八糟的
fileName就是文件名
export function exportMethod(data, fileName) { const link = document.createElement('a') let blob = new Blob([data], { type: 'application/vnd.ms-excel' }) link.style.display = 'none' link.href = URL.createObjectURL(blob) link.download = fileName //下载的文件名 document.body.appendChild(link) link.click() document.body.removeChild(link) }
直接使用如果有依赖没装,装一下依赖,没有就直接下一步
如果直接这样用的话会出现一个什么问题呢
文件是打不开的
解决办法呢,就是在接口处api文件下添加“responseType: 'blob'“这句话
export function exports(params) { return request({ url: 'category/export', method: 'get', responseType: 'blob', //改变接收的值类型 ContentType: 'application/x-www-form-urlencoded', params }) }
这样导出来的文件就能看了