many request

* 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;
				},


				// ?送?求(方法[post,get], 地址, 数据, 回?函数)
				sendReq: 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.status == 200 || objXMLHttp.status == 304))
								{
									callback(objXMLHttp);
								}
							}
						}
						catch(e)
						{
							alert(e);
						}
					}
				}
}; 


示例: 

<mce:script type="text/javascript" src="xmlhttp.js" mce_src="xmlhttp.js"></mce:script>
<mce: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);
// --></mce:script> 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值