一个封装的XMLHttp Object Pool and XMLHttp chunnel Pool,挺不错

// ============ ajaxClass ( XMLHttp Object Pool and XMLHttp chunnel Pool ) ============



var Request = new function(){



this.pool = new Array();



this.getXMLHttp = function (chunnel)

{



if(chunnel != null)

{

for (var a = 0; a < this.pool.length; a++)

{

if(this.pool[a]["chunnel"] == chunnel)

{

if(this.pool[a]["obj"].readyState == 0 || this.pool[a]["obj"].readyState == 4)

{

return this.pool[a]["obj"];

}

else

{

return "busy";

}

}

}



this.pool[this.pool.length] = new Array();

this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();

this.pool[this.pool.length - 1]["chunnel"] = chunnel;

return this.pool[this.pool.length - 1]["obj"];

}



for (var i = 0; i < this.pool.length; i++)

{

if(this.pool[i]["obj"].readyState == 0 || this.pool[i]["obj"].readyState == 4)

{

return this.pool[i]["obj"];

}

}



this.pool[this.pool.length] = new Array();

this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();

this.pool[this.pool.length - 1]["chunnel"] = "";

return this.pool[this.pool.length - 1]["obj"];



}





this.createXMLHttp = function ()

{



if(window.XMLHttpRequest)

{

var xmlObj = new XMLHttpRequest();

}

else

{

var MSXML = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];

for(var n = 0; n < MSXML.length; n++)

{

try

{

var xmlObj = new ActiveXObject(MSXML[n]);

break;

}

catch(e)

{

}

}

}



return xmlObj;



}





this.reSend = function (url,data,callback,extra,chunnel)

{

var objXMLHttp = this.getXMLHttp(chunnel) ;



if(typeof(objXMLHttp) != "object")

{

return false ;

}



if(data == "")

{

objXMLHttp.open('GET' , url, true);

objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache

objXMLHttp.send('');

}

else

{

objXMLHttp.open('POST' , url, true);

objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache

objXMLHttp.setRequestHeader("Content-Length",data.length);

objXMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

objXMLHttp.send(data);

}



if(typeof(callback) == "function" )

{

objXMLHttp.onreadystatechange = function ()

{

if(objXMLHttp.readyState == 4)

{

if(objXMLHttp.status == 200 || objXMLHttp.status == 304)

{

if(extra != null)

{

callback(objXMLHttp,extra) ;

}

else

{

callback(objXMLHttp) ;

}

}

// else

// {

// alert("Error loading page\n" + objXMLHttp.status + ":" + objXMLHttp.statusText);

// }

}

}

}



}



}
原文地址:https://www.cnblogs.com/niuniu502/p/740985.html