如何写一个Ajax实例

写了一个最基本的Ajax实例

var param = {
	url: '',
	type: 'get',
	data: {},
	success: function() {},
	error: function(){},
};

var ajax = function(param){
	
	//创建xhr对象
	var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	
	//对传入的值进行前期处理,包括type/url/data
	var type = (param.type || 'get').toUpperCase();
	var url = param.url;
	if(!url){
		return
	}
	var data = param.data,
		dataArr = [];
	for(var k in data) {
		dataArr.push(k + '=' + data[k]);
	}
	//为了避免取得的是缓存数据,为其添加一个唯一的id
	dataArr.push('=' + Math.random());
	
	//get还是post。url处理,open()。send()
	if(type === "GET"){
		url = url + "?" + dataArr.join("&");
		xhr.open(type,url.replace(/\?$/g,''),true);
		xhr.send();
	}else if(type === "POST"){
		xhr.open(type,url,true);
		//像表单一样post数据,使用setRequestHeader来添加头部
		xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		xhr.send(dataArr.join("&"));
	}
	
	//接收请求
	xhl.onload = function(){
		
		//成功
		if(xhr.status === 200 || xhr.status === 304 ){
			var res;
			if(param.success && param.success instanceOf Function){
				//获取字符串形式的响应数据
				res = xhr.responseText;
				if(typeOf res === 'String'){
					//把字符串形式转换成JSON形式
					res = JSON.parse(res);
					param.success.call(xhr,res);
				}
			}
		}else{
		
		//失败
			if(param.error && param.error instanceOf Function){
				param.error.call(xhr,res);
			}
		}
	}
}
```

复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值