- 浏览: 51458 次
- 性别:
- 来自: 南京
最新评论
-
wangying95599:
type= "Hello/css " ty ...
GWT CSS -
oceanG_Y:
这个框架和struts1的差不多,也是分三部分,视图,控制器, ...
配置mojavi -
liyh:
你觉得这个框架怎么样。
配置mojavi -
chaiyanxing:
怎么不写完呀?
Struts2 分页 -
hurui3550:
原文地址:
http://s2container.seasar ...
开源框架 Seasar2
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖 掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建一个XMLHttpRequset的对象池,如果池里有 空闲的对象,则使用此对象,否则将创建一个新的对象。
下面是我最近写的一个简单的类:
/**
* 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 );
}
}
}
};
* 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 );
}
}
}
};
示例:
<
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>
<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>
源代码里有中文的注释,是ansi的,如果你的网站或ie下选择编码为UTF-8,可能会导致错误,你把你ie的编码改成gb2312看看,或者去掉文件里的中文注释
发表评论
-
Extjs grid数据手动排序
2010-01-10 11:31 0在使用ExtJS的grid控件的时候,经常需要对gri ... -
关于 商业智能
2009-04-21 00:29 143各位版油们,有没有是做商务智能行业的,请大家谈谈对该行业未来. ... -
程序员的七种武器
2008-11-22 23:43 884程序员的七种武器 第 ... -
java 数据库 基础知识
2008-10-18 13:32 1016数据库方面: 1. 存储过程和函数的区别 存储过程是用 ... -
java 基本知识
2008-10-18 13:31 885面向对象的特征有哪些方面 1. 抽象: 抽 ... -
GWT Grid 列合并
2008-05-31 12:08 977我建了一个10行2列的grid的表格;我想让某一行或多行的两列 ... -
GWT CSS
2008-05-29 23:25 1294在Hello.gwt.xml里加上 <styleshee ... -
DIV 层 透明
2008-05-27 22:32 1896<center><div style=&qu ... -
API Developer's Guide: Java
2008-05-19 23:44 1074引自:http://code.google.com/apis/ ... -
妻子的说明书
2008-05-19 17:16 783妻子的说明书 (已经国家食药监局注册司备案)【品名】妻子 ... -
IE Developer
2008-05-15 11:13 855Name:piaodown.com Serial:88QWS- ... -
GWT学习笔记(一)
2008-05-12 20:20 1800Language Support Intrinsi ... -
GWT开发的8个忠告
2008-05-11 22:06 1171Google Web工具包(GWT)确 ... -
GWT开发中注意点:
2008-05-11 21:47 1215引自:http://www.blogjava.net/stee ... -
Google Web ToolKit
2008-05-10 00:49 863引自:http://www.ibm.com/developer ... -
Java with Crystal Reports
2008-05-08 23:26 5252引用自:http://forum.java.sun.com/t ... -
工作中,一般都会用几种语言?
2008-05-05 13:48 1544我工作中,用JAVA和PHP,还有C#,交替开发;都要给累死了 ... -
开源框架 Seasar2
2008-04-25 16:51 9510在日本,Seasar2这个框架十分的流行。Seasar2其实就 ... -
Struts2 分页
2008-04-25 16:31 2844一、 准备工作 开发环境:MyEclipse5.0 ... -
Spring 配XML的技巧!
2008-04-25 14:16 776Spring 配XML的技巧! 1. 避免使用自动装配 Spr ...
相关推荐
为了优化这一过程,我们可以考虑创建一个XMLHttpRequest对象池,复用这些对象而不是每次请求都新建。 首先,理解XMLHttpRequest的基本工作原理至关重要。当一个XHR对象被创建时,它会占用一定的系统资源,包括内存...
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest 对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建...
ajax XMLHttpRequest。。。。。。
为了解决这个问题,我们可以构建一个XMLHttpRequest对象池,合理地复用这些对象,从而提高应用程序的效率。 对象池是一种设计模式,用于管理一组可重用的对象,避免了反复创建和销毁对象的开销。在JavaScript中,...
当涉及到大量并发请求时,XMLHttpRequest对象池的概念就变得重要了。浏览器会限制同一时刻可以发起的并发请求数量,以防止资源耗尽。对象池就是预先创建并缓存一定数量的XMLHttpRequest实例,当需要发送请求时,可以...
`说明.txt`文件可能是对Ajax对象池实现的详细解释或者使用指南,包括如何初始化对象池,如何从池中获取和归还Ajax对象,以及如何配置对象池的大小和回收策略等。通常,对象池的大小需要根据应用的实际需求进行调整,...
### 一页面多XMLHttpRequest对象知识点详解 #### 1. XMLHttpRequest与Ajax技术 - **XMLHttpRequest简介**:`XMLHttpRequest`是一种内置的JavaScript对象,它允许网页向服务器发送异步请求并处理响应,无需重新加载...
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建一...
.老生常谈—XmlHttpRequest 代码 代码如下: var xmlHttp; function createXmlHttpRequest() { if... } } 如果不用Jquery手写javascript,上面要改成XmlHttpRequest对象池,这就不写了。 .触发AutoComplete函数 代码
2. **Ajax请求**:利用JavaScript的XMLHttpRequest对象或者更现代的Fetch API,向服务器发送异步请求,携带用户名作为参数。 3. **服务器处理**:后端接收到请求,查询数据库中是否有相同的用户名。 4. **响应反馈**...
在ASP环境下,开发者可能使用XMLHttpRequest对象或者第三方库来模拟HTTP请求,获取网页内容,然后通过正则表达式或DOM解析技术提取所需信息,并将数据存储到数据库或文件中。 【ASP中的HTTP请求】在ASP中,可以使用...
1. **定义Pool类**:通过定义一个Pool类,我们可以创建一个XHR对象池。这个类中包含一些方法来管理XHR对象的创建、获取和重用。 2. **构造函数**:在Pool类的构造函数中,我们需要初始化一个数组`_cacheCase`,用于...
DWR允许JavaScript在用户的浏览器中直接调用服务器端的Java方法,这通过XMLHttpRequest对象实现了异步通信。DWR提供了一个自动化处理这些请求和响应的框架,减少了开发者处理低级Ajax细节的工作量。 在本示例中,...
`proxyPool` 属性是一个对象池,用于存储创建的XMLHttpRequest或XDomainRequest实例。`length`方法用于计算池中的对象数量,通过遍历池中的属性并减去1(因为属性`length`自身也计算在内)。 2. **索引和异步设置*...
它的核心在于利用JavaScript创建XMLHttpRequest对象,通过这个对象,可以在后台与服务器进行通信,无需刷新整个页面就能获取或发送数据。这一特性显著提升了用户体验,减少了服务器的负载,因为只需要传输必要的信息...