闭包封装ajax

3 篇文章 0 订阅
1 篇文章 0 订阅

1、参考druid数据源设计:https://blog.csdn.net/blog_zxb/article/details/97416487

// 定义命名空间方法,自动创建多级变量
var namespace = function(){
	var a = arguments, o = null, i, j, d;
	for (var i = 0; i < a.length; i++) {
		o = window;
		d = a[i].split('.');
		for (var j = 0; j < d.length; j++) {
			o[d[j]] = o[d[j]] || {};
			o = o[d[j]];
		}
	}
	return o;
};

 2、闭包设计ajax(原来的设计:https://blog.csdn.net/blog_zxb/article/details/97407209

myajax.js文件内容如下

// 定义命名空间方法,自动创建多级变量
var namespace = function(){
	var a = arguments, o = null, i, j, d;
	for (var i = 0; i < a.length; i++) {
		o = window;
		d = a[i].split('.');
		for (var j = 0; j < d.length; j++) {
			o[d[j]] = o[d[j]] || {};
			o = o[d[j]];
		}
	}
	return o;
};
namespace('xiao.bing.zhou');
xiao.bing.zhou = (function(){
	
	return {
		ajax: function(opt){
			opt = opt || {};
			var url = opt.url || '';
			var type = opt.type || 'get';
			var data = opt.data || null;
			var dataType = opt.dataType || '';
			var success = opt.success;
			var error = opt.error;
			if(!opt.success){
				console.error('ajax not has success function!');
				return;
			}
			if(!opt.error){
				console.error('ajax not has error function!');
				return;
			}
			var xhr;
			
			if (XMLHttpRequest) {
				xhr = new XMLHttpRequest();
		    }else {
		    	xhr = new ActiveXObject('Microsoft.XMLHTTP');
		    }
			
			xhr.onreadystatechange=function(){
				if(xhr.readyState === 4){
					if(xhr.status === 200){
						var result = xhr.responseText;
						if(dataType === 'json'){
							try{
								result = JSON.parse(result);
							}catch(err){
								console.error(err);
								error(xhr, xhr.statusText, err);
								return;
							}
						}
						success(result);
					}else{
						error(xhr, xhr.statusText);
					}
				}
			}
			xhr.open(type, url, true);
			xhr.send(data);
		}
	}

})();

3、使用(需要引入myajax.js)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="javascript:testMyAjax();">测试myAjax</a>
</body>
<script type="text/javascript" src="myajax.js"></script>
<script type="text/javascript">
function testMyAjax(){

    xiao.bing.zhou.ajax({
		url: location.path + 'alarmAction/testJson',
		type: 'get',
		dataType: 'text',
		success: function(data){
			console.log(data);
			alert(data);
		},
		error: function(xhr,statusText){
			console.log(xhr);
			console.log(statusText);
			alert(xhr);
		}
	});
}
</script>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值