網上找的一個很好用的Ajax類

來源:互聯網
上載者:User
現在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);
                                        }
                               }
                      }
             }
    }

}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.