封装使用jQuery的$.ajax
博客专区 > LM_Mike 的博客 > 博客详情
封装使用jQuery的$.ajax
LM_Mike 发表于9个月前
封装使用jQuery的$.ajax
  • 发表于 9个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

直接上代码,因为项目中使用了封装jQuery的$.ajax,代码如下

/**增加$.ajax的功能,对固定格式接口的结果进行预处理
 * 通过调用$$.ajax,拥有$.ajax的全部功能和参数,
 * 但success方法的参数变更为返回结果json中的data部分,只要返回结果的resultCode!=1,都将调用error(code,message,data)参数。
 * error的三个参数,当resultCode大于1时,code对应resultCode,message对应resultMessage,第三个参数为空。
 * 当data.data.errorCode存在时,code 对应data中的errorCdoe,message对应data中的errorMessage,data对应data。
 * 此外,对于resultCode == 0的情况,可以额外定义inCase(code,message,data)函数进行处理。如果定义了inCase函数,则error函数不会再处理resultCode==1,但有data.data.errorCode的结果。
 * 
 */
var $$={ajax:function(options){
	if(options.autoJson!=false&&options.success){
		var success= options.success;
		var error = options.error;
		var inCase = options.inCase;
		options.success=function(data){
			if(data.resultCode == undefined && typeof data == "string"){
				try{
					data = eval("("+data+")");
				}catch(e){
					console.log(e);
					return success(data);
				}
			}
			
			if(data.resultCode == 1){
				if(data.data && data.data.errorCode){ 
					if(inCase){
						inCase(data.data.errorCode,data.data.errorMessage,data.data);
					}else{
						if(error)
							error(data.data.errorCode,data.data.errorMessage,data.data);
					}
				}else{
					success(data.data,data.timestamp);
				}
			}else if(data.resultCode == 2000){
				console.log("登录超时,需要重新登录!");
				sessionStorage.clear();
				location.href = base+"pages/index.html";
				return;
			}
			if(data.resultCode !=1){  //resultCode == 1002,1003等情况
				if(error)
					error(data.resultCode,data.errorMessage);
			}
				
			
		}
	}
	return $.ajax(options);
}};

共有 人打赏支持
粉丝 1
博文 218
码字总数 37930
×
LM_Mike
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: