三维GIS交流 WorldWind GoogleEarth EV-Globe osgearth


               积沙成塔,集腋成裘,千里之行,积于跬步。夏丏尊有联:贵有恒,何必三更起五更睡;最无益,只怕一日曝十日寒。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
现在Ajax技术越来越流行了,出现了许多的服务器端框架,可以像以前写服务器端代码一样来使用Ajax,但是我还是觉得那样有些麻烦,不如直接用javascript来的简单、方便,从网上找到一段代码,实现了Ajax连接池,觉得不错,大家共享吧。
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,chunnel)
    {
             var objXMLHttp = this.getXMLHttp(chunnel)
             
             if(typeof(objXMLHttp) != "object")
             {
                       return ;
             }
             
             url += (url.indexOf("?") >= 0) ? "&nowtime=" + new Date().getTime() : "?nowtime=" + new Date().getTime();
           
             if(data == "")
             {
                  objXMLHttp.open('GET' , url, true);
                  objXMLHttp.send('');
             }
             else
             {
                  objXMLHttp.open('POST' , url, true);
                  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)
                                        {
                                                 callback(objXMLHttp)
                                        }
                                        else
                                        {
                                                 alert("Error loading page\n"+ objXMLHttp.status +":"+ objXMLHttp.statusText);
                                        }
                               }
                      }
             }
    }

}

 

posted on 2007-08-01 15:18  niceboy  阅读(501)  评论(0编辑  收藏  举报
点击这里给我发消息