`
ifan
  • 浏览: 1717 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

自己写的一个XMLHTTP类

阅读更多
js 代码
  1. /*******************************************************************************  
  2. ** 用法:  
  3. ** var mt = new TAjax("WinButton.xml");  
  4. ** mt.ResponseType = "XML";  
  5. ** mt.handler = function (vXmlDocument){alert("重载的方法!");}  
  6. ** mt.exec();  
  7. *******************************************************************************/  
  8. function TAjax(vURL)   
  9. {   
  10.     this.URL          = vURL;   
  11.     this.XMLHTTP      = null;   
  12.     this.ResponseType = "Text"//Text/XML   
  13.   
  14.     this.exec = function ()   
  15.     {   
  16.         if (window.XMLHttpRequest) {   
  17.             try {   
  18.                 this.XMLHTTP = new XMLHttpRequest();   
  19.             } catch (e) {   
  20.                 alert("错误: " + e.name + "\n" + "描述: " + e.message);   
  21.                 return false;   
  22.             }   
  23.         } else if (window.ActiveXObject) {   
  24.             try {   
  25.                 this.XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");   
  26.             } catch (e) {   
  27.                 try {   
  28.                     this.XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");   
  29.                 } catch (e) {   
  30.                     alert("错误: " + e.name + "\n" + "描述: " + e.message);   
  31.                     return false;   
  32.                 }   
  33.             }   
  34.         }   
  35.         if (!this.XMLHTTP) {   
  36.             alert("不能创建XMLHttpRequest 对象实例.");   
  37.             return false;   
  38.         }   
  39.   
  40.         /************************************************************************  
  41.         ** For Internet Explorer/Opera  
  42.         ** 对于Internet Explorer/Opera中,在processReqChange方法里面,this引用的是  
  43.         ** XMLHTTP或者XMLHttpRequest对象本身,所以需要给XMLHTTP或者XMLHttpRequest设定  
  44.         ** handler(处理方法)和responseType(返回文档类型),以便于在方法中用this.method()  
  45.         ** 的方式引用。  
  46.         ************************************************************************/  
  47.         this.XMLHTTP.responseType          = this.ResponseType;   
  48.         this.XMLHTTP.handler               = this.handler;   
  49.   
  50.         /************************************************************************  
  51.         ** For Mozilla/Firefox  
  52.         ** 对于Firefox,在 XMLHttpRequest对象的processReqChange方法里面,this引用的是  
  53.         ** processReqChange方法本身,所以需要把processReqChange方法作为一个Object,另外  
  54.         ** 赋值,设定好handler(处理方法),responseType(返回文档类型),以便于能在方法中用  
  55.         ** this.method()的方式引用。  
  56.         ** 另外,还需要多设定一个对于XMLHttpRequest对象本身的引用,因为在processReqChange  
  57.         ** 方法中this是processReqChange本身,无法直接引用到XMLHttpRequest对象。  
  58.         **   
  59.         ** this.processReqChange.XMLHTTP      = this.XMLHTTP;  
  60.         ** this.processReqChange.handler      = this.handler;  
  61.         ** this.processReqChange.responseType = this.ResponseType;  
  62.         **
  63.         ** 当然,最好的办法是用Firefox支持的addEventListener方法捕获processReqChange事件
  64.         ************************************************************************/  
  65.   
  66.         if (typeof(this.XMLHTTP.addEventListener) == "function") {   
  67.             this.XMLHTTP.addEventListener("load"this.processReqChange, false);   
  68.         } else {   
  69.             this.XMLHTTP.onreadystatechange    = this.processReqChange;   
  70.         }   
  71.         this.XMLHTTP.open("GET"this.URL, true);   
  72.         this.XMLHTTP.send(null);   
  73.     }   
  74.   
  75.     this.handler = function (vXmlDocument)   
  76.     {   
  77.         alert(vXmlDocument);   
  78.     }   
  79.   
  80.     this.processReqChange = function ()   
  81.     {   
  82.         var XMLHTTP = this.XMLHTTP ? this.XMLHTTP : this;   
  83.   
  84.         if (XMLHTTP.readyState == 4) {   
  85.             if (XMLHTTP.status == 200) {   
  86.                 this.handler(this.responseType == "XML" ? XMLHTTP.responseXML : XMLHTTP.responseText);   
  87.             } else {   
  88.                 alert("在接收XML文档时发生错误,代码如下:\n" + XMLHTTP.status + "\n" + XMLHTTP.responseText);   
  89.                 return false;   
  90.             }   
  91.         }   
  92.     }   
  93. }   
分享到:
评论

相关推荐

    自己写的一个完整的ajax xmlHttp请求类的封装

    一个完整的ajax xmlHttp请求类的封装,兼容多种浏览器,包括了对返回数据的处理。

    也写一个Ajax.Request类附代码

    直接使用prototype.js体积比较大(40多k),而且仅仅用到其中的ajax功能,因此为了减轻下载的负担,又不能改动已经在prototype.js框架下写好的代码,只能是按照prototype的风格,自己写一个ajax类,达到零成本移植框架...

    [removed]以前写的xmlhttp池,代码

    1. **定义Pool类**:通过定义一个Pool类,我们可以创建一个XHR对象池。这个类中包含一些方法来管理XHR对象的创建、获取和重用。 2. **构造函数**:在Pool类的构造函数中,我们需要初始化一个数组`_cacheCase`,用于...

    PBXML写读例子,接口程序用得着

    在PB中,你可以使用XMLObject类来创建一个空的XML文档,然后通过添加元素、属性和文本节点来构建XML结构。例如: ```pb XMLObject xmlDoc = Create XMLObject xmlDoc.CreateRoot("rootElement") xmlDoc.Root()....

    自己做采集程序

    现在网上的采集程序很多,但是有时候你发现一个好的网站,想自己做个采集工具采集一些信息,就需要自己去写程序了,其实这样的采集程序并不难写,主要是去分析源网站的网页结构。首先去下载个XMLHTTP的类文件:<&...

    用正则和xmlHttp实现的asp小偷程序

    - **类初始化**: 在`subclass_initialize`方法中,创建了一个正则表达式对象`oReg`和一个`XMLHttpRequest`对象`oXmlHttp`。 - `oReg`: 设置为全局匹配(`Global=true`)且忽略大小写(`IgnoreCase=true`)。 - `...

    asp post写的取cctv天气

    总结来说,"asp post写的取cctv天气"这个任务涉及了ASP编程、HTTP POST请求、API交互以及数据解析等多个技术点,通过这些技术,我们可以构建一个动态网页,实时获取并展示CCTV提供的天气预报信息。

    dotnet程序员基础面试题

    Q8问道:“C#中要使一个类支持 FOREACH 遍历,实现过程怎样?”这道题考察了面试者对C#中的FOREACH遍历的了解,以及对实现过程的理解。 知识点7:XMLHTTP和WEBSERVICE Q11问道:“你对 XMLHTTP、WEBSERVICE 了解吗...

    VB对XML读写操作

    首先,XML DOM是XML文档的一种表示形式,它将XML文档解析成一个树形结构,每个节点代表XML文档的一部分。在VB中,我们可以使用MSXML库或者System.Xml命名空间中的类来创建和操作DOM。例如,`Microsoft.XMLDOM` 或 `...

    C#面试问题大全推荐看看

    抽象类可以包含方法实现,且一个类可以实现多个接口,但只能继承一个抽象类。 16. **自定义控件与用户控件** 自定义控件用于重写或扩展内置控件;用户控件是组合现有控件的可视化组件。选择取决于功能需求和复用性...

    ASP.NET面试题.doc

    在编译时,Web页面中服务器控件代码会和隐藏类合并为一个类,但是页面中的和中的代码会单独编译为一个类,并继承页面类。 五、调用WebService的方法 1. 在VS.NET中,使用添加Web引用菜单选项 2. 在非.Net环境中,...

    NET程序员面试题汇总

    - **Overload 和 Override**:重载(Overload)发生在同一个类中,重写(Override)发生在子类和父类之间。 - **Set 的元素重复判断**:Set使用equals方法来判断元素是否重复。 - **常见的 RuntimeException**:...

    springmvc2.5.6实现rest接口实例

    2)写controller类 3)写application-yg.servlet.xml 4)配置web.xmlhttp://u.download.csdn.net/images/btn_submit.png 3、步骤之处 spring-webmvc-2.5.6.jar不支持@PathVariable注解,参数必须采用传统方式的...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    在XML文档中,我们可以将每一个标识元素看作一个对象---它有自己的名称和属性。 XML创建了标识,而DOM的作用就是告诉script如何在浏览器窗口中操作和显示这些标识 上面我们已经简要的讲述了一些XML的基本原理,...

    jqury+ajax+json应用介绍

    jQuery的核心理念之一就是“write less, do more”,即“写得更少,做得更多”。这使得开发人员能够更高效地完成前端开发工作。 #### jQuery基本介绍 本节重点介绍jQuery的基本概念及其应用场景。 1. **选择器**...

    VB.rar_Ch372_VB CH372_ch372 VB

    标题中的"VB.rar_Ch372_VB CH372_ch372 VB"似乎是一个压缩包文件,其中包含了与VB(Visual Basic)编程语言相关的资料,特别是关于"CH372"章节的内容。"CH372"可能是课程代码或者特定主题的标识,但具体含义需要更多...

    VB6 处理Json数据源码

    "VB6处理Json数据源码"是一个针对VB6开发者的资源,帮助他们能够解析和操作JSON(JavaScript Object Notation)数据格式,这是现代网络数据交换的标准。 JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    asp.net学习积累的代码段

    页面中传值到另一个页面上的控件).txt 页面中控件的传值.txt 用TREEVIEWKOk控件使用的站点地图文件.txt 用户控件.txt 在.NET中利用XMLHTTP下载文件.txt 在ASP.NET中实现POST发送数据.txt 在IE浏览器中使用Windows...

    官方api读取json

    在VB中,可以使用`MSXML2.XMLHTTP`对象或`System.Net.WebClient`类来发送GET或POST请求,根据API的要求提供必要的参数,如URL、认证信息、请求头等。 2. **获取响应**:发送请求后,API会返回一个HTTP响应,其中...

Global site tag (gtag.js) - Google Analytics