JS类库——XMLHttpRequestPool

XMLHttpRequestPool.js
Code /* 建一个XMLHttpRequest对象池 *//**
 * XMLHttpRequest Object Pool
 * @author    skey <skey_chen@163.com>*/var __XMLHttp__ = {
    _objPool: [],
    _getInstance:function() {for (var i = 0; i < this._objPool.length; i++) {// 判断是否有未使用或者请求已经完成的对象            if (this._objPool[i].readyState == 0|| this._objPool[i].readyState == 4|| this._objPool[i].readyState == "complete") {return this._objPool[i];
            }
        }this._objPool[this._objPool.length] = this._createObj();// IE5中不支持push方法        return this._objPool[this._objPool.length - 1];
    },
    _createObj:function() {if (window.XMLHttpRequest) {// mozilla版本            var objXMLHttp = new XMLHttpRequest();
        }else {// windows版本,Microsoft.XMLHTTP为IE6.0以下版本            var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];for(var n = 0; n < MSXML.length; n++) {try {var objXMLHttp = new ActiveXObject(MSXML[n]);break;
                }catch(e) {
                }
            }
        }// mozilla某些版本没有readyState属性        if (objXMLHttp.readyState == null) {
            objXMLHttp.readyState = 0;
            objXMLHttp.addEventListener("load", function() {
                    objXMLHttp.readyState = 4;if (typeof objXMLHttp.onreadystatechange == "function") {
                        objXMLHttp.onreadystatechange();
                    }
                },  false);
        }return objXMLHttp;
    },// 发送请求(方法[post,get], 地址, 数据, 回调函数)    // ajax众多的frame都有callback的function, 但参数是规定好的, 在framework的prototype中都定义了    sendRequest:function(method, url, data, callback) {var objXMLHttp = this._getInstance();with(objXMLHttp) {try {// 加随机数防止缓存                if (url.indexOf("?") > 0) {
                    url += "&randnum=" + Math.random();
                }else {
                    url += "?randnum=" + Math.random();
                }
                open(method, url, true);// 设定请求编码方式                setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
                send(data);
                onreadystatechange = function() {if ((objXMLHttp.readyState == 4 || objXMLHttp.readyState == "complete")&& (objXMLHttp.status == 200 || objXMLHttp.status == 304)) {
                        callback(objXMLHttp);// 相当于调用回调函数,并以objXMLHttp作为参数                    }
                }
            }catch(e) {// alert(e);            }
        }
    }
}//__XMLHttp__.sendRequest('GET', urlPage, '', returnFunction);
//function returnFunction(obj){obj.responseText;obj.responseHTML;
}

下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值