服务器不能创建对象:创建XMLHttpRequset对象池的方法



在ajax应用中通常个页面要同时发送多个请求如果只有个XMLHttpRequest对象前面请求还未完成后面就会把前面覆盖掉如果每次都创建个新XMLHttpRequest对象也会造成浪费解决办法就是创建个XMLHttpRequ对象池如果池里有空闲对象则使用此对象否则将创建个新对象
下面是我最近写个简单类:

/**
*XMLHttpRequestObjectPool
*
*@authorlegend<[email protected]>
*@linkhttp://www.ugia.cn/?p=85
*@Copyrightwww.ugia.cn
*/

varXMLHttp={
_objPool:,

_getInstance:function
{
for(vari=0;i<this._objPool.length;i)
{
(this._objPool[i].readyState0||this._objPool[i].readyState4)
{
this._objPool[i];
}
}

//IE5中不支持push思路方法
this._objPool[this._objPool.length]=this._createObj;

this._objPool[this._objPool.length-1];
},

_createObj:function
{
(window.XMLHttpRequest)
{
varobjXMLHttp=XMLHttpRequest;

}

{
varMSXML=[’MSXML2.XMLHTTP.5.0’,’MSXML2.XMLHTTP.4.0’,’MSXML2.XMLHTTP.3.0’,’MSXML2.XMLHTTP’,’Microsoft.XMLHTTP’]; [Page]
for(varn=0;n<MSXML.length;n)
{
try
{
varobjXMLHttp=ActiveXObject(MSXML[n]);
;
}
catch(e)
{
}
}
}

//mozilla某些版本没有readyState属性
(objXMLHttp.readyStatenull)
{
objXMLHttp.readyState=0;

objXMLHttp.addEventListener(\"load\",function
{
objXMLHttp.readyState=4;

(typeofobjXMLHttp.onreadystatechange\"function\")


{
objXMLHttp.onreadystatechange; [Page]
}
},false);
}

objXMLHttp;
},

//发送请求(思路方法[post,get],地址,数据,回调)
sendReq:function(method,url,data,callback)
{
varobjXMLHttp=this._getInstance;

with(objXMLHttp)
{
try
{
//加随机数防止缓存Cache
(url.indexOf(\"?\")>0)
{
url\"&randnum=\"+Math.random;
}

{
url\"?randnum=\"+Math.random;
}

open(method,url,true);

//设定请求编码方式
RequestHeader(’Content-Type’,’application/x-www-form-urlencoded;char=UTF-8’); [Page]
send(data);
onreadystatechange=function
{
(objXMLHttp.readyState4&&(objXMLHttp.status200||objXMLHttp.status304))
{
callback(objXMLHttp);
}
}
}
catch(e)
{
alert(e);
}
}
}
};

举例:
<scripttype=\"text/JavaScript\"src=\"xmlhttp.js\"></script>
<scripttype=\"text/Javascript\">
functiontest(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(’Poollength:’+XMLHttp._objPool.length);
</script>
Tags:  部件不能创建对象 创建com对象 无法创建对象 服务器不能创建对象

延伸阅读

最新评论

发表评论