前不久写的一个XMLHttpRequest封装类。加上了一个请求池,并可以添加多个事件监听器

window.reqObjPool = new ReqObjPool();
function    ReqObjPool(){// Request Object Pool
    this.pool = new Array();
    this.getReqObj=function(){
        var micXhrV = ["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];//micsoft XMLHttpRequest Verstion
        var xhr = this.pool.pop();//XMLHttpRequest
        if(xhr==null){
            if (Browser.IE)
                for(var v in micXhrV)try{xhr=new ActiveXObject(micXhrV[v]);break;}catch(e){}
            else
                xhr=new XMLHttpRequest();
        }
        return xhr;
    }
    this.getBackReqObj=function(xhr){this.pool.push(xhr);xhr.abort();}
}

function    HttpRequest(){
    this.isAsync = true;
    this.ll = new Array();//listener List
    this.addListener=function(listener){this.ll.push(listener);}
    this.clearListener=function(){this.ll.length=0;}
    function send(ll,xhr,url,method,args,isAsync){
        xhr.onreadystatechange=function(){
            for(var v in ll)ll[v](xhr);
            if(xhr.readyState==4||xhr.readyState==0)reqObjPool.getBackReqObj(xhr)
        }
        xhr.open(method,url,isAsync);
        xhr.send(args);
    }
    this.post=function(url,args){send(this.ll,reqObjPool.getReqObj(),url,"POST",args,this.isAsync);}
    this.get=function(url){send(this.ll,reqObjPool.getReqObj(),url,"GET",null,this.isAsync);}
}

/*----------------------------------------------*/
*使用举例:
*var hr = new HttpRequest();
* hr.addListener(function(xhr){if(xhr.readyState==4)alert(xhr.resposeText);});
*hr.get("getUserName.do","userId=11");
*
*------------------------------------------------*/

在此推荐一下:  饰装修评价推荐查询网 http://www.zhuangxiu007.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值