`
sisi1984117
  • 浏览: 152196 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

【转】用js创建XMLHttpRequest对象池

阅读更多
  1. //使用literal语法定义一个对象:XMLHttp   
  2. var XMLHttp =    
  3. {   
  4.     //定义第一个属性,该属性用于缓存XMLHttpRequest对象的数组   
  5.     XMLHttpRequestPool: [],   
  6.     //对象的第一个方法,该方法用于返回一个XMLHttpRequest对象   
  7.     getInstance:function()   
  8.     {   
  9.         // 从XMLHttpRequest对象池中取出一个空闲的XMLHttpRequest   
  10.         for (var i = 0; i < this.XMLHttpRequestPool.length; i ++)   
  11.         {   
  12.             //如果XMLHttpReuqest的readyState为0,或者为4,   
  13.             //都表示当前的XMLHttpRequest对象为闲置的对象   
  14.             if (this.XMLHttpRequestPool[i].readyState == 0 ||    
  15.                 this.XMLHttpRequestPool[i].readyState == 4)   
  16.             {   
  17.                 return this.XMLHttpRequestPool[i];   
  18.             }   
  19.         }   
  20.         //如果没有空闲的,将再次创建一个新的XMLHttpRequest对象   
  21.         this.XMLHttpRequestPool[this.XMLHttpRequestPool.length]    
  22.             = this.createXMLHttpRequest();   
  23.         //返回刚刚创建的XMLHttpRequest对象   
  24.         return this.XMLHttpRequestPool[this.XMLHttpRequestPool.length - 1];   
  25.     },   
  26.     //创建新的XMLHttpRequest对象   
  27.     createXMLHttpRequest:function()   
  28.     {   
  29.         //对于DOM 2 规范的浏览器   
  30.         if (window.XMLHttpRequest)   
  31.         {   
  32.             var objXMLHttp = new XMLHttpRequest();   
  33.         }   
  34.         //对于Internet Explorer浏览器   
  35.         else  
  36.         {   
  37.             //将Internet Explorer内置的所有XMLHTTP ActiveX控制设置成数组   
  38.             var MSXML = ['MSXML2.XMLHTTP.5.0''MSXML2.XMLHTTP.4.0',    
  39.                 'MSXML2.XMLHTTP.3.0''MSXML2.XMLHTTP''Microsoft.XMLHTTP'];   
  40.             //依次对Internet Explorer内置的XMLHTTP控件初始化,尝试创建XMLHttpRequest对象   
  41.             for(var n = 0; n < MSXML.length; n ++)   
  42.             {   
  43.                 try  
  44.                 {   
  45.                     //如果可以正常创建XMLHttpRequest对象,使用break跳出循环   
  46.                     var objXMLHttp = new ActiveXObject(MSXML[n]);    
  47.                     break;   
  48.                 }   
  49.                 catch(e)   
  50.                 {   
  51.                 }   
  52.             }   
  53.         }   
  54.         //Mozilla某些版本没有readyState属性   
  55.         if (objXMLHttp.readyState == null)   
  56.         {   
  57.             //直接设置其readyState为0   
  58.             objXMLHttp.readyState = 0;   
  59.             //对于哪些没有readyState属性的浏览器,将load动作与下面的函数关联起来   
  60.             objXMLHttp.addEventListener("load", function ()   
  61.             {   
  62.                 //当从服务器加载数据完成后,将readyState状态设为4   
  63.                 objXMLHttp.readyState = 4;   
  64.                 if (typeof objXMLHttp.onreadystatechange == "function")   
  65.                 {   
  66.                     objXMLHttp.onreadystatechange();   
  67.                 }   
  68.             }, false);   
  69.         }   
  70.         return objXMLHttp;   
  71.     },   
  72.     //定义对象的第三个方法: 发送请求(方法[POST,GET], 地址, 数据, 回调函数)   
  73.     sendRequest: function (method, url, data, callback)   
  74.     {   
  75.         var objXMLHttp = this.getInstance();   
  76.         with(objXMLHttp)   
  77.         {   
  78.             try  
  79.             {   
  80.                 //增加一个额外的randnum请求参数,用于防止IE缓存服务器响应   
  81.                 if (url.indexOf("?") > 0)   
  82.                 {   
  83.                     url += "&randnum=" + Math.random();   
  84.                 }   
  85.                 else  
  86.                 {   
  87.                     url += "?randnum=" + Math.random();   
  88.                 }   
  89.                 //打开与服务器的连接   
  90.                 open(method, url, true);   
  91.                 //对于使用POST请求方式   
  92.                 if (method == "POST")   
  93.                 {   
  94.                     // 设定请求头   
  95.                     setRequestHeader('Content-Type',    
  96.                         'application/x-www-form-urlencoded');   
  97.                     send(data);   
  98.                 }   
  99.                 //对于采用GET请求   
  100.                 if (method == "GET")   
  101.                 {   
  102.                     send(null);   
  103.                 }   
  104.                 //设置状态改变的回调函数   
  105.                 onreadystatechange = function ()   
  106.                 {   
  107.                     //当服务器的相应完成时,以及获得了正常的服务器响应   
  108.                     if (objXMLHttp.readyState == 4 &&   
  109.                         (objXMLHttp.status == 200 ||    
  110.                             objXMLHttp.status == 304))   
  111.                     {   
  112.                         //当响应时机成熟时,调用回调函数处理响应   
  113.                         callback(objXMLHttp);   
  114.                     }   
  115.                 }   
  116.             }   
  117.             catch(e)   
  118.             {   
  119.                 alert(e);   
  120.             }   
  121.         }   
  122.     }   
  123. }; 

原文地址:http://justsee.iteye.com/blog/690353

分享到:
评论

相关推荐

    用js创建XMLHttpRequest对象池

    NULL 博文链接:https://justsee.iteye.com/blog/690353

    AJAX XMLHttpRequest慨述

    在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。Internet ...

    AJAX_XMLHttpRequest.rar_ajax java_ajax xmlhttpreque_opera

     在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。 ...

    Ajax基本语法 Ajax

    在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。Internet ...

    Ajax-hook:拦截由XMLHttpRequest发出的浏览器的AJAX请求-js源码

    在源网页加载之前,实现一个XMLHttpRequest的代理对象,然后覆盖全局的XMLHttpRequest,这样一但上层调用 new XMLHttpRequest这样的代码时,其实创建的是Ajax-hook的代理对象实例

    XMLHttpRequest中文参考手册.pdf

    在非IE的浏览器中,需要用 new XmlHttpreQueSt()来创建对象,如下: var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.open("GET", "http://localhost/books.xml", false); xmlHttpReq.send(); alert(xmlHttpReq...

    Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据

    客户端使用JavaScript语言,使用XMLHttpRequest对象发送请求到服务器。该对象提供了对服务器的异步请求功能,可以在不刷新页面的情况下更新数据。 3.2 服务器端实现 服务器端使用ASP.NET技术,使用C#语言编写处理...

    AJax 学习笔记一(XMLHTTPRequest对象)

    现在很多公司都在做标准的静态页面,为了增强客户的体验效果,经常会涉及到AJax效果,而设计AJax使用的一种重要技术(工具)就是XMLHttpRequest对象了。今天学习了点关于XMLHttpRequest对象的一些方法和属性,有点...

    XMLHttpRequest对象_Ajax异步请求重点(推荐)

    一、XMLHttpRequest对象 1.Ajax能够是实现异步传输,所依赖的就是JavaScript中的XMLHttpRequest 2.XMLHttpRequest对象是XMLHttp组件的对象,它是一个抽象对象,允许脚本从服务器获取返回的eXML数据或将数据发送到...

    AJAX XMLHttpRequest对象详解

    第一:创建XMLHttpRequest对象 第二:注册回调函数 第三:设置和服务器交互的参数 第四:设置向服务器端发送的数据,启动和服务器端的交互 第五:判断和服务器端的交互是否完成,还有判断服务器端是否返回正确的数据...

    javascript创建createXmlHttpRequest对象示例代码

     function createXmlHttpRequest() { if(window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest(); if(xmlHttp.overrideMimeType) { xmlHttp.overrideMimeType(“text/xml”); } } else if(win

    XMLHttpRequest

    1.js对象 XMLHttpRequest 属性: 1.readyState属性 readyState:只读属性。 作用:通过读取该属性,从而知道XMLHttpRequest 目前进行到了哪一步... XMLHttpRequest对象的readyState的每次变化,该函数就会被触发调用

    js(javascript)获取网页源码

    //用于创建XMLHttpRequest对象 function createXmlHttp() { //根据window.XMLHttpRequest对象是否存在使用不同的创建方式 if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); //FireFox、Opera等...

    AJAX入门之XMLHttpRequest慨述

    在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。Internet ...

    PHP100视频教程 48:Ajax PHP快速上手及应用.rar

    2、创建XMLHttpRequest对象 对于Ajax,最核心的一个对象是XMLHttpRequest,所有的Ajax操作都离不开对这个对象的操作 xmlHttp = new XMLHttpRequest(); 3、XMLHttpRequest对象相关方法 XMLHttpRequest.open(传递...

    PHP100视频教程 48:Ajax+PHP快速上手及应用

    2、创建XMLHttpRequest对象对于Ajax,最核心的一个对象是XMLHttpRequest,所有的Ajax操作都离不开对这个对象的操作xmlHttp = new XMLHttpRequest();3、XMLHttpRequest对象相关方法XMLHttpRequest.open(传递方式,地址...

    javascript完全学习手册1 源码

    12.3.1 创建XMLHttpRequest对象 354 12.3.2 获取XMLHttpRequest 对象的信息 356 12.3.3 向服务器发送请求 357 12.3.4 处理服务器响应 360 12.3.5 用户注册实例 361 12.3.6 处理XML请求 364 12.3.7 动态列表 368 第13...

    XMLHTTP对象参考手册

    最通用的定义为:XmlHttp是一套可以在...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XMLHttpRequest手册

    压缩包“ajax.rar”内含:“《掌握Ajax....掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ 掌握 Ajax,第 3 部分: Ajax 中的高级请求和响应 ...

    XMLHttp中文参考手册.rar

    XmlHttp是一套可以在Javascript、VbScript...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

Global site tag (gtag.js) - Google Analytics