使用原生js写ajax

// 使用原生js 封装ajax
// 兼容xhr对象
function createXHR(){
	if(typeof XMLHttpRequest != "undefined"){ // 非IE6浏览器
		return new XMLHttpRequest();
	}else if(typeof ActiveXObject != "undefined"){   // IE6浏览器
		var version = [
					"MSXML2.XMLHttp.6.0",
					"MSXML2.XMLHttp.3.0",
					"MSXML2.XMLHttp",
		];
		for(var i = 0; i < version.length; i++){
			try{
				return new ActiveXObject(version[i]);
			}catch(e){
				//跳过
			}
		}
	}else{
		throw new Error("您的系统或浏览器不支持XHR对象!");
	}
}
// 转义字符
function params(data){
	var arr = [];
	for(var i in data){
		arr.push(encodeURIComponent(i) + "=" + encodeURIComponent(data[i]));
	}
	return arr.join("&");
}
// 封装ajax
function ga_ajax(obj){
	var xhr = createXHR();
	obj.url = obj.url + "?rand=" + Math.random(); // 清除缓存
	obj.data = params(obj.data);      // 转义字符串
	if(obj.method === "get"){      // 判断使用的是否是get方式发送
		obj.url += obj.url.indexOf("?") == "-1" ? "?" + obj.data : "&" + obj.data;
	}
	// 异步
	if(obj.async === true){
		// 异步的时候需要触发onreadystatechange事件
		xhr.onreadystatechange = function(){
			// 执行完成
			if(xhr.readyState == 4){
				callBack();
			}
		}
	}
	xhr.open(obj.method,obj.url,obj.async);  // false是同步 true是异步 // "demo.php?rand="+Math.random()+"&name=ga&ga",
	if(obj.method === "post"){
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xhr.send(obj.data);
	}else{
		xhr.send(null);
	}
	// xhr.abort(); // 取消异步请求
	// 同步
	if(obj.async === false){
		callBack();
	}
	// 返回数据
	function callBack(){
		// 判断是否返回正确
		if(xhr.status == 200){
			obj.success(xhr.responseText);
		}else{
			obj.Error("获取数据失败,错误代号为:"+xhr.status+"错误信息为:"+xhr.statusText);
		}
	}
}

var html = document.getElementsByTagName("html")[0];
html.onclick = function(){
	ga_ajax({
		"method" : "post",
		"url" : "dem0o.php",
		"data" : {
			"name" : "gaga",
			"age" : 10000000,
			"num" : "12346&598"
		},
		"success" : function(data){
			alert(data);
		},
		"Error" : function(text){
			alert(text);
		},
		"async" : false
	});
}

使用原生js写ajax,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。