Ajax详解与封装

  • Ajax详细步骤
  • 1、创建XMLHTTPRequest对象,并对浏览器兼容处理
var xhr = null;
if(window.XMLHttpRequest){
	xhr = null;
}else if{
	xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
  • 2、准备发送http请求
xhr.open("get","xxx.php",true);
  • 3、执行发送http请求
xhr.send(null);

其中send方法的参数分两种情况;若发起的Http请求为get方式,则send方法的参数为null;若发起的http请求为post请求,则send方法的参数为params,params参数的值为所需提交给服务端文件的参数;此外,当Http请求为post时,需设置请求头。代码如下:

xhr.setRequestHeader("Cotent-Type","application/x-www-form-urlencoded");
  • 4、设置回调函数
xhr.onreadystateChange = function(){
		if(xhr.readyState == 4){
			if(xhr.status == 200){
				var result	== xhr.responseText;
			}
		}
	}
  • 回调函数中onreadyStatechange方法表示,当http对象的readyState为且status为200时,http响应成功,此时得到http响应数据,并对应进行解析处理。
  • Ajax封装代码
function myAjax(type,url,params,dataType,callback,asy){
	var xhr = null;
	if(window.XMLHttpRequest){
		xhr = new XMLHttpResuest();
	}else{
		xhr = new ActiveXObject("Microsoft.XMLHttp");
	}
	if(type == "get"){
		if(params && params != ""){
			url += "?" + params;
		}

	}
	xhr.open(type,url,asy);
	if(type == "get"){
		xhr.send(null);
	}else if(type == "post"){
		xhr.setRequestHeader("Cotent-Type","application/x-www-form-urlencoded");
		xhr.send(params);
	}
	if(asy){
			xhr.onreadystateChange = function(){
			if(xhr.readyState == 4){
				if(xhr.status == 200){
					var result	== null;
					if(dataType == "json"){
						result = xhr.resposeText;
						result = JSON.parse(result);
					}esle if(dataType == "xml"){
						result = xhr.resposeXML;
					}esle{
						result = xhr.resposeText;	
					}
				}
				if(callback){
					callback(result);
				}
			};
		}
	}
	else{
		if(xhr.status == 200){
			var result	== null;
			if(dataType == "json"){
				result = xhr.resposeText;
				result = JSON.parse(result);
			}esle if(dataType == "xml"){
				result = xhr.resposeXML;
			}esle{
				result = xhr.resposeText;	
			}
		}
		if(callback){
			callback(result);
		}
	}

	
}
  • ajax封装测试
var username = document.querySelector("#username");
username.onblur = function(){
	var usernameValue = username.value;
	var type = "get";
	var url = "checkUsername.php";
	var params = "uname=" + usernameValue;
	var dataType = "text";
	myAjax(type, url, params, dataType, function(result){
		var user_result = document.querySelector("#user_result");
		if(result == "ok"){
			user_result.innerText = "用户名可用"}else{
			user_result.innerText = "用户名不可用";
		}
	},true);
}

最后推荐一个公众号,一枚IT技术人成长路上关于生活和职场的思考,欢迎书友们前来交流和分享心得

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值