<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 1, 文章 - 44, 評論 - 2, 引用 - 0
    數(shù)據(jù)加載中……

    建一個XMLHttpRequest對象池

    ?在ajax應(yīng)用中,通常一個頁面要同時發(fā)送多個請求,如果只有一個XMLHttpRequest對象,前面的請求還未完成,后面的就會把前面的覆蓋掉,如果每次都創(chuàng)建一個新的XMLHttpRequest對象,也會造成浪費。解決的辦法就是創(chuàng)建一個XMLHttpRequset的對象池,如果池里有空閑的對象,則使用此對象,否則將創(chuàng)建一個新的對象。
    ??下面是我最近寫的一個簡單的類:
    ??
    ??/**
    ?? * XMLHttpRequest Object Pool
    ?? *
    ?? * @author legend <legendsky@hotmail.com>
    ?? * @link http://www.ugia.cn/?p=85
    ?? * @Copyright www.ugia.cn
    ?? */
    ??
    ??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)
    ?? {
    ?? return this._objPool[i];
    ?? }
    ?? }
    ??
    ?? // IE5中不支持push方法
    ?? this._objPool[this._objPool.length] = this._createObj();
    ??
    ?? return this._objPool[this._objPool.length - 1];
    ?? },
    ??
    ?? _createObj: function ()
    ?? {
    ?? if (window.XMLHttpRequest)
    ?? {
    ?? var objXMLHttp = new XMLHttpRequest();
    ??
    ?? }
    ?? else
    ?? {
    ?? 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;
    ?? },
    ??
    ?? // 發(fā)送請求(方法[post,get], 地址, 數(shù)據(jù), 回調(diào)函數(shù))
    ?? sendReq: function (method, url, data, callback)
    ?? {
    ?? var objXMLHttp = this._getInstance();
    ??
    ?? with(objXMLHttp)
    ?? {
    ?? try
    ?? {
    ?? // 加隨機數(shù)防止緩存
    ?? if (url.indexOf("?") > 0)
    ?? {
    ?? url += "&randnum=" + Math.random();
    ?? }
    ?? else
    ?? {
    ?? url += "?randnum=" + Math.random();
    ?? }
    ??
    ?? open(method, url, true);
    ??
    ?? // 設(shè)定請求編碼方式
    ?? setRequestHeader(’Content-Type’, ’application/x-www-form-urlencoded; charset=UTF-8’);
    ?? send(data);
    ?? onreadystatechange = function ()
    ?? {
    ?? if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
    ?? {
    ?? callback(objXMLHttp);
    ?? }
    ?? }
    ?? }
    ?? catch(e)
    ?? {
    ?? alert(e);
    ?? }
    ?? }
    ?? }
    ??};
    ??
    ??示例:
    ??<script type="text/JavaScript" src="xmlhttp.js"></script>
    ??<script type="text/Javascript">
    ??function test(obj)
    ??{
    ?? alert(obj.statusText);
    ??}
    ??
    ??XMLHttp.sendReq(’GET’, ’http://www.ugia.cn/wp-data/test.htm’, ’’, test);
    ??XMLHttp.sendReq(’GET’, ’http://www.ugia.cn/wp-data/test.htm’, ’’, test);
    ??XMLHttp.sendReq(’GET’, ’http://www.ugia.cn/wp-data/test.htm’, ’’, test);
    ??XMLHttp.sendReq(’GET’, ’http://www.ugia.cn/wp-data/test.htm’, ’’, test);
    ??
    ??alert(’Pool length:’ + XMLHttp._objPool.length);
    ??</script>

    posted on 2006-05-29 21:46 ASONG 閱讀(168) 評論(0)  編輯  收藏 所屬分類: JAVA

    主站蜘蛛池模板: 亚洲日韩精品无码一区二区三区 | 免费看少妇作爱视频| 久久久久久国产精品免费免费男同| 国产成人免费视频| 免费人成在线观看视频播放| 亚洲精品无码mv在线观看网站 | 免费无遮挡无码永久视频| 67194成是人免费无码| www.亚洲精品| 亚洲成a人片在线观看中文动漫| 亚洲日韩精品无码专区加勒比| 日韩在线视频免费| 真人做A免费观看| 亚洲精品无码专区2| 亚洲一级视频在线观看| g0g0人体全免费高清大胆视频| 国产h视频在线观看网站免费| 亚洲日韩国产精品无码av| 免费看黄的成人APP| 日韩黄色免费观看| 亚洲精品在线电影| 免费无码作爱视频| 亚洲中字慕日产2021| 国产在线98福利播放视频免费| 91亚洲自偷手机在线观看| 国产99久久久久久免费看| 国产AV无码专区亚洲精品| 国产99精品一区二区三区免费 | 中文字幕精品亚洲无线码一区| 亚洲成a人无码亚洲成www牛牛| 成人黄色免费网站| 另类专区另类专区亚洲| 成人免费淫片在线费观看| 亚洲欧洲校园自拍都市| 国产午夜无码视频免费网站| 亚洲精品无码永久在线观看男男 | 人禽伦免费交视频播放| 亚洲天天做日日做天天欢毛片| 最新亚洲成av人免费看| 中文字幕第13亚洲另类| 免费的黄网站男人的天堂|