Vue中关于axios和jsonp的封装
import qs from 'qs'import axios from 'axios'//拦截器axios.interceptors.request.use(function (config) {console.log('正在发送请求哦...')//添加loading效果return config;}, function (error) {retur...
·
import qs from 'qs'
import axios from 'axios'
//拦截器
axios.interceptors.request.use(function (config) {
console.log('正在发送请求哦...')//添加loading效果
return config;
}, function (error) {
return Promise.reject(error);
});
// Add a response interceptor
axios.interceptors.response.use(function (response) {
console.log('请求成功啦...')
return response;
}, function (error) {
return Promise.reject(error);
});
const ajax={
post:function(url,data={}){
return new Promise((resolve,reject)=>{
axios.post(url,qs.stringify(data)).then(function(res){
resolve(res.data)
}).catch(function(err){
reject(err)
})
})
},
get:function(url,data={}){
return new Promise((resolve,reject)=>{
axios.get(url,{params:qs.stringify(data)}).then(function(res){
resolve(res.data)
}).catch(function(err){
reject(err)
})
})
},
}
export default ajax;
在main.js中
import ajax from './common/api/index.js'
Vue.prototype.$post=ajax.post Vue.prototype.$get=ajax.get
jsonp
import originJSONP from 'jsonp'
/*
jsonp(url,option,callbackFn)
{name:1,age:20}
www.aaa.com/?
*/
export default function(url,data,option){
url+=(url.indexOf('?')<0 ? '?' : '&' )+param(data);
return new Promise(function(resolve,reject){
originJSONP(url,option,function(err,res){
if(!err){
resolve(res);
}else{
reject(err)
}
})
})
}
/*
{name='aa',age=20}
&name=aa&age=20
*/
function param(data){
let url='';
for(let key in data){
let item =data[key]!==undefined ? data[key] : '';
url+=`&${key}=${encodeURIComponent(item)}`
}
return url ? url:'';
}
更多推荐
已为社区贡献1条内容
所有评论(0)