AJAX封装实例

博客围绕Python相关内容,介绍了创建Ajax核心对象XMLHttpRequest的方法,考虑到浏览器兼容性,尤其是IE7之前版本的情况,还提及了发送请求、处理响应,并给出完整代码,最后标注了转载来源。

 17143959_S9i5.jpg



1,创建Ajax的核心对象XMLHttpRequest

因为浏览器之间的不兼容,IE7之前的版本并没有原生的XMLHttpRequest对象却实现为ActiveX对象。
互联网及各种书籍中有着多种创建方式,有的复杂很多行代码,有的则简洁很少代码。当然复杂的考虑的情形更多一些。如下几乎将IE中所有的情况都考虑到了

1
var  xhr = window.XMLHttpRequest ?new  XMLHttpRequest() :new  ActiveXObject('Microsoft.XMLHTTP');

2,发送请求 

1
2
xhr.open
xhr.send

3,处理响应

1
2
3
4
5
6
7
xhr.onreadystatechange =function(){
    if(xhr.readyState == 4){
        if(xhr.status == 200){//当然你可以把200~300之间或304的都理解成响应成功
            //callback
        }
    }
}

完整代码如下

function ajax(method,url,data,async,hander200,loading,hander404,hander500){
			var request = null;
			if(window.XMLHttpRequest){
				request = new XMLHttpRequest();
			}else if(window.ActiveXObject){
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			request.onreadystatechange=function(){
				if(4==request.readyState){
					if(200==request.status){
						if(hander200){
							 hander200(request);
							}
					}else if(404==request.status){
						if(hander404){
							hander404();
						}
					}else if(500==request.status){
						if(hander500){
							hander500();
						}
					}
				}else{
					if(loading){
						loading();
						}
				}
			}
			if("get"==method.toLowerCase()){
				if(data==null||data==""){
					request.open("get",url,async);
				}else{
					request.open("get",url+"?"+data,async);
				}
				request.send(null);
			}else if("post"==method.toLowerCase()){
				request.open("post",url,async);
				request.setRequestHeader("content-Type","application/x-www-form-urlencoded");
				request.send(data);
			}
			
		}

 

转载于:https://my.oschina.net/ichaoge/blog/145137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值