构建pool管理无刷新页面的xmlhttp对象

2016-02-19 15:34 9 1 收藏

下面图老师小编要向大家介绍下构建pool管理无刷新页面的xmlhttp对象,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

在页面上使用ActiveXObject的代价是很大的,如果我们的无刷新页面使用xmlhttp技术,我们或许需要频繁的建立xmlhttp对象,当然我们也可以使用全局变量来cache一个xmlhttp对象实例。但是这样的方法适合于同步方式xmlhttp通信,而对于异步方式xmlhttp通信将会出现问题。由于没有了进程的堵塞,用户可能再次调用同一个xmlhttp实例,如果这时前一个通信未完成,那么就失败了。

    建立一个pool来管理页面上的xmlhttp对象实例,最明显的好处就是不会再创建冗余对象,同时也不会出现多个操作在同一个工作的xmlhttp实例上被调用的情况。

    具体实现,我们使用一个Array作为pool来存储已创建的xmlhttp对象实例,然后每次调用从pool中去取一个实例。xmlhttp实例通讯完毕后我们不用做任何处置,因为它自身的readyState属性可以标识出它是否可用,如果当时没有空闲的xmlhttp实例,且pool中的实例数小于m_MaxPoolLength,那么就创建一个新的实例并放入pool中。pool的实现代码如下: __XmlHttpPool__源码#region __XmlHttpPool__源码
var __XmlHttpPool__ =
{
    m_MaxPoolLength : 10,
    m_XmlHttpPool : [],
    
    __requestObject : function()
    {
        var xmlhttp = null;
     &nb

        {
            return this.__extendPool();
        }
        return xmlhttp;
    },
    
    __extendPool : function()
    {
        if ( this.m_XmlHttpPool.length  this.m_MaxPoolLength )
        {

bsp;              xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch(e2) {}
            }
            if ( xmlhttp )
            {
                this.m_XmlHttpPool.push(xmlhttp);
            }
            return xmlhttp;
       &nb

    },
    
    __receiveRemoteData : function(url, callback, httpmethod, data)
    {
        var xmlhttp = this.__requestObject();
        if ( !xmlhttp )
        {
            return null;
        }
        xmlhttp.open(httpmethod, url, true);
  &nbs

是服务器地址,callback是处理返回数据(responseText)的回调函数。比如:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

script language="javascript"
__XmlHttpPool__.PostRemoteData(url, Render, 'abc');

function Render(string)
{
    if ( string )
    {
        txbContent.value += string + 'rn';
    }

来源:http://www.tulaoshi.com/n/20160219/1609928.html

延伸阅读
标签: Web开发
传统上,我们浏览网页,如果加入最新的数据。只能是等我们重新向服务器端请求时才能显示出来。但是,对于一些时效性很强的网站,传统的这种做法是不能满足的。   我们可以让程序自动刷新,定时向服务器请求数据。5秒取一次数据,10秒取一次数据。利用XMLHTTP发出请求并取得数据。传到客户端,客户端重新组织并显示数据。 dem...
服务器的回传会引发整个页面的刷新,怎么样只让它刷新局部呢,前几天看见书上有讲用 WebService行为的,今天试了试,效果还不错 在web目录中需要一个文件webservice.htc 可以到这里下载: http://msdn.microsoft.com/workshop/author/webservice/webservice.htc 见一个WebService 文件名为Service1.asmx: [WebService(Namespace="http:/...
标签: Web开发
前些时间写了几篇关于XMLHTTP运用的实例. (可以到http://dev.csdn.net/user/wanghr100看之前的几编关于XMLHTTP的介绍.) 近来看论坛上经常有人提问关于如何无刷新,自动更新数据. 传统上,我们浏览网页,如果加入最新的数据.只能是等我们重新向服务器端请求时才能显示出来. 但是,对于一些时效性很强的网站.传统的这种做法是不能满足的. 我们可以...
标签: Web开发
利用XMLHTTP无刷新添加数据之Get篇. 我们传统的提交数据的方法都是用Form来实现的. Form标记中的Method属性确定了表单元素的数据在发送到服务器时, 如何对HTTP请求信息进行打包. Method 属性可以使用的方法 Method属性 发送表单元素的方式 读取数据的Request集合 Get 标识在URL的最后 QueryString Post 在HTTP请求的主体内(HTTP请求的自...
标签: Web开发
尤其是在Jquery,porotype,Ext等框架流行之后,大量简化的代码可说是为程序员带来了福音, 从繁重的代码工作之中解脱出来,轻易的就可以实现过去书写复杂的功能。 不过有利有弊,到如今,习惯了使用各种框架,而很少自己书写内部源码的程序员们,还有几个记得Ajax那其实并不算复杂的基本代码呢? 今天,为了不遗忘当初的热忱,我把这基础的...

经验教程

199

收藏

90
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部