在项目中使用axios
库来发送ajax异步请求
封装方法
根据后端约定的返回类型简单封装请求处理方法
{
code:
msg:
data:{}
}
function ajax(url, data = {}, method = 'GET', handleSuccess = () => {}, handleMsg = (data) => { message.error(data.msg) }, handleError = () => {}) {
let promise;
if (method === 'GET') {
promise = axiso.get(url, { params: data });
}
if (method === 'POST') {
promise = axiso.post(url, data);
}
if (method === 'DELETE') {
promise = axiso.delete(url, { params: data });
}
if (method === 'PUT') {
promise = axiso.put(url, data);
}
promise.then(res => {
if (res.data.code === 200)
handleSuccess(res.data);
else
handleMsg(res.data)
}).catch(e => handleError(e))
}
文件下载
ajax无法触发浏览器打开保存文件对话框,不能将文件下载到硬盘,于是选用传统方式下载文件。
let link = document.createElement('a');
link.setAttribute("download", "");
link.href = url;
link.click();
后期调整
由于沟通问题,后端接收post与put请求不能解析json格式,所以手动修改为form格式
if (method === 'POST') {
promise = axiso({
method: method,
url: url,
headers: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: Qs.stringify(data),
})
//promise = axiso.post(url, data);
}