封装uni ajax

基于uni微信小程序的封装
一种是函数,一种是Promise
注意:当needToken为true的时候,需要提前登陆,且需要在全局定义siteBaseUrl地址。
/*
	hanker
	param: 
		token: 默认取本地的hankerToken
		loading :默认值是true
*/

function post(url,data,success,error,needToken){
    var _self = this, 
	    // 参数
        url = url,
        data = data|| {}, 
        loading = data.loading === undefined ? true : data.loading,
		method="POST",
		header = {'content-type' : "application/json"};
		data.token = uni.getStorageSync('hankerToken')||'';
        
    //拼接完整请求地址
    var requestUrl = this.siteBaseUrl + url;

    if(needToken && !data.token){ // 需要token且data中没有token;
		uni.showModal({
		    showCancel:false,
		    content:"需要登录"
		});
		return;
    }
    var timestamp = Date.parse(new Date());//时间戳
	// 添加时间戳
    data["timestamp"] = timestamp;
    // #ifdef MP-WEIXIN
    data["device"] = "wxapp";
    data["ver"] = "1.0.0";
    // #endif
    // #ifdef APP-PLUS || H5
    data["device"] = "iosapp";
    data["ver"] = "1.0.0";
    // #endif
    
    //请求方式:GET或POST(POST需配置header: {'content-type' : "application/x-www-form-urlencoded"},)
	// method = "GET";
	// header = {'content-type' : "application/json"};

    //用户交互:加载圈
    if (loading) {
        uni.showLoading({title:'加载中...'});
    }
    
    console.log("网络请求start");
    //网络请求
    uni.request({
        url: requestUrl,
        method: method,
        header: header,
        data: data,
        success: res => {
            console.log("网络请求success:" + JSON.stringify(res));
            if (res.code && res.code != 200) {//api错误
                uni.showModal({
                    content:"" + res.msg
                });
                return;
            }
     
            typeof success == "function" && success(res.data);
        },
        fail: (e) => {
            console.log("网络请求fail:" + JSON.stringify(e));
            uni.showModal({
                content:"" + e.errMsg
            });
            typeof error == "function" && error(e.data);
        },
        complete: () => {
            console.log("网络请求complete");
            if (loading) {
                uni.hideLoading();
            }
            return;
        }
    });
}

function get(url,data,success,error,needToken){
    var _self = this, 
	    // 参数
        url = url,
        data = data|| {}, 
        loading = data.loading === undefined ? true : data.loading,
		method = "GET",
		header = {'content-type' : "application/json"};
		data.token = uni.getStorageSync('hankerToken')||'';
        
    //拼接完整请求地址
    var requestUrl = this.siteBaseUrl + url;

    if(needToken && !data.token){ // 需要token且data中没有token;
		uni.showModal({
		    showCancel:false,
		    content:"需要登录"
		});
		return;
    }
    var timestamp = Date.parse(new Date());//时间戳
	// 添加时间戳
    data["timestamp"] = timestamp;
    // #ifdef MP-WEIXIN
    data["device"] = "wxapp";
    data["ver"] = "1.0.0";
    // #endif
    // #ifdef APP-PLUS || H5
    data["device"] = "iosapp";
    data["ver"] = "1.0.0";
    // #endif
    
    //请求方式:GET或POST(POST需配置header: {'content-type' : "application/x-www-form-urlencoded"},)
    //用户交互:加载圈
    if (loading) {
        uni.showLoading({title:'加载中...'});
    }
    
    console.log("网络请求start");
    //网络请求
    uni.request({
        url: requestUrl,
        method: method,
        header: header,
        data: data,
        success: res => {
            console.log("网络请求success:" + JSON.stringify(res));
            if (res.code && res.code != 200) {//api错误
                uni.showModal({
                    content:"" + res.msg
                });
                return;
            }
     
            typeof success == "function" && success(res.data);
        },
        fail: (e) => {
            console.log("网络请求fail:" + JSON.stringify(e));
            uni.showModal({
                content:"" + e.errMsg
            });
            typeof error == "function" && error(e.data);
        },
        complete: () => {
            console.log("网络请求complete");
            if (loading) {
                uni.hideLoading();
            }
            return;
        }
    });
}


/*
	此ajax采用Promise写法
*/

function postPro(url,data,needToken){
    var _self = this, 
	    // 参数
        url = url,
        data = data|| {}, 
        loading = data.loading === undefined ? true : data.loading,
		method="POST",
		header = {'content-type' : "application/json"};
		data.token = uni.getStorageSync('hankerToken')||'';
        
    //拼接完整请求地址
    var requestUrl = this.siteBaseUrl + url;

    if(needToken && !data.token){ // 需要token且data中没有token;
		uni.showModal({
		    showCancel:false,
		    content:"需要登录"
		});
		return;
    }
    var timestamp = Date.parse(new Date());//时间戳
	// 添加时间戳
    data["timestamp"] = timestamp;
    // #ifdef MP-WEIXIN
    data["device"] = "wxapp";
    data["ver"] = "1.0.0";
    // #endif
    // #ifdef APP-PLUS || H5
    data["device"] = "iosapp";
    data["ver"] = "1.0.0";
    // #endif
    
    //请求方式:GET或POST(POST需配置header: {'content-type' : "application/x-www-form-urlencoded"},)
	// method = "GET";
	// header = {'content-type' : "application/json"};

    //用户交互:加载圈
    if (loading) {
        uni.showLoading({title:'加载中...'});
    }
    
    console.log("网络请求start");
	return new Promise((resolve,reject)=>{
		uni.request({
		    url: requestUrl,
		    method: method,
		    header: header,
		    data: data,
		    success: res => {
		        console.log("网络请求success:" + JSON.stringify(res));
		        // if (res.code && res.code != 200) {//api错误
		        //     uni.showModal({
		        //         content:"" + res.msg
		        //     });
		        //     return;
		        // }
		 
		        resolve(res.data);
		    },
		    fail: (e) => {
		        console.log("网络请求fail:" + JSON.stringify(e));
		        uni.showModal({
		            content:"" + e.errMsg
		        });
		        typeof error == "function" && error(e.data);
				reject(e.data);
		    },
		    complete: () => {
		        console.log("网络请求complete");
		        if (loading) {
		            uni.hideLoading();
		        }
		        return;
		    }
		});
	});
    //网络请求
 
}

function getPro(url,data,needToken){
    var _self = this, 
	    // 参数
        url = url,
        data = data|| {}, 
        loading = data.loading === undefined ? true : data.loading,
		method = "GET",
		header = {'content-type' : "application/json"};
		data.token = uni.getStorageSync('hankerToken')||'';
        
    //拼接完整请求地址
    var requestUrl = this.siteBaseUrl + url;

    if(needToken && !data.token){ // 需要token且data中没有token;
		uni.showModal({
		    showCancel:false,
		    content:"需要登录"
		});
		return;
    }
    var timestamp = Date.parse(new Date());//时间戳
	// 添加时间戳
    data["timestamp"] = timestamp;
    // #ifdef MP-WEIXIN
    data["device"] = "wxapp";
    data["ver"] = "1.0.0";
    // #endif
    // #ifdef APP-PLUS || H5
    data["device"] = "iosapp";
    data["ver"] = "1.0.0";
    // #endif
    
    //请求方式:GET或POST(POST需配置header: {'content-type' : "application/x-www-form-urlencoded"},)
    //用户交互:加载圈
    if (loading) {
        uni.showLoading({title:'加载中...'});
    }
    
    console.log("网络请求start");
    //网络请求
   return new Promise((resolve,reject)=>{
   	uni.request({
   	    url: requestUrl,
   	    method: method,
   	    header: header,
   	    data: data,
   	    success: res => {
   	        console.log("网络请求success:" + JSON.stringify(res));
   	 //        if (res.code && res.code != 200) {//api错误
   	 //            uni.showModal({
   	 //                content:"" + res.msg
   	 //            });
   	 //            return;
   	 //        }
   	 
   	        resolve(res.data);
   	    },
   	    fail: (e) => {
   	        console.log("网络请求fail:" + JSON.stringify(e));
   	        uni.showModal({
   	            content:"" + e.errMsg
   	        });
   	        typeof error == "function" && error(e.data);
   			reject(e.data);
   	    },
   	    complete: () => {
   	        console.log("网络请求complete");
   	        if (loading) {
   	            uni.hideLoading();
   	        }
   	        return;
   	    }
   	});
   });
}

export {
	post,
	get,
	postPro,
	getPro
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值