`
xplq
  • 浏览: 90050 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

XmlHttp封装研究(初步)

阅读更多
虽然ajax有很多很牛的框架,如Prototype,DOJO,DWR,JSON,AjaxTags等等,但是,以前都是简单的使用,对其没有进行过系统的研究,如今,自己对ajax进行个系统的研究。
对于ajax的研究,首先从XmlHttp封装开始,参考各方面的资料:
ajax技术的实现主要依赖于xmlhttprequest,但我们在调用其来进行异步数据的传输时,由于xmlhttp是个短线过程(处理事件完成后就销毁)如果不对该对象进行包装处理的话,就不得不在需要调用的地方重新构建xmlhttprequest,每次调用都要写一大段的代码,实在不是个好办法。因此有必要了对xmlhttp封装,在此提供一个封装方案。
一:基本步骤
需要XMLHttpRequest对象的一个实例,要告诉它如果状态有变化该怎么做,还要告诉它向哪里发送请求以及如何发送请求,最后还需要指导XMLHttpRequest发送请求。
1.创建XMLHttpRequest对象实例
可以创建一个新实例,也可以访问包含有XMLHttpRequest实例的一个变量
2.设置onreadystatechange属性指向的函数
告诉XMLHttpRequest对象,哪个函数会处理XMLHttpRequest对象状态的改变,为此把对象的onreadystatechange属性设置为指向JavaScript函数的指针。
3.指定请求的属性
XMLHttpRequest对象的open()方法会指定发送的请求。通常,Open()方法取3个参数:一个是指示所用方法(通常是GET或POST)的串;一个是表示目标资源URL的串;一个是Boolean值,指示请求是否是异步的。
4.将请求发送给服务器
XMLHttpRequest对象的send()方法把请求发送到指定的目标资源。Send()方法接受一个参数,通常是一个串或一个DOM对象。这个参数作为请求体的一部分发送到目标URL。
二:封装细节
1.跨浏览器创建XMLHttpRequest对象
Ajax所依赖的JavaScript不是绝对统一的,在不同的浏览器中有不同的JavaScript实现,
XMLHTTPRequest在不同浏览器中的实现也有所不同,因此封装xmlhttp必须考虑浏览器问题。
XMLHttpRequest在不同的浏览器中的实现完全不同:IE中采用ActiveX Object实现,而Firefox等浏览器则采用不同的方式实现,即使是IE,因为版本的问题,也有不同的实现方式
因此,在创建XMLHttpRequest对象时,必须尽量考虑到目前已经存在的浏览器,采用更通用的方式创建XMLHttpRequest对象。下面的代码可以实现在不同的浏览器钟创建XMLHttpRequest对象:

var xmlrequest;
function createXMLHttpRequest()
{
	//对于Firefox和Opera等浏览器
	if (window.XMLHttpRequest) {
       xmlrequest = new XMLHttpRequest();
    }
    else //对于IE浏览器
    {
    	//将IE的不同XMLHttp实现声明数组
    	var MSXML=['Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
    	//依次对每个XMLHTTP实现创建XMLHttpRequest对象
    	for(var i=0;i<MSXML.length;i++)
    	{
    		try
    		{
    			xmlrequest=new ActiveXObject(MSXML[i]);
    			break;
    		}
    		catch (ex) {
   			}
    	}
    }
}


由上可以看出,上述代码依然不能保证所有浏览器都能创建xmlhttpRequest对象。

不知这种思路是否合适,恳请大家指点,知道这是以前大家研究的问题,现在请问:除了研究prototype.js等现有的框架之外大家有没有好的点子对xmlhttp进行封装?
继续中。。。。。。。。
分享到:
评论
5 楼 xplq 2008-06-03  
llchcba001 写道
XmlHttp手册上说的比较清楚。

辛苦了,谢谢,我看看
4 楼 llchcba001 2008-06-03  
XmlHttp手册上说的比较清楚。
3 楼 kaipingk 2008-05-28  
我有个很简单的封装看 http://www.taoxueba.com/myjs
2 楼 csf177 2008-05-28  
prototype.js也是人写的
你这代码已经够全了
1 楼 kimmking 2008-05-28  
DWR中的

  if (batch.rpcType == dwr.engine.XMLHttpRequest) {
    if (window.XMLHttpRequest) {
      batch.req = new XMLHttpRequest();
    }
    // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used
    else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) {
      batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP);//  此处即是你的那个var MSXML=['Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0', .........
    }
  }

相关推荐

    vb6源码:好用Xmlhttp封装.rar

    标题中的“vb6源码:好用Xmlhttp封装.rar”表明这是一个使用Visual Basic 6 (VB6)编程语言编写的代码库,主要功能是封装了XMLHTTP组件,用于从Web服务器上获取HTML源码。XMLHTTP是Microsoft ActiveX组件,它允许在...

    Asp.net XMLHTTP封装类(GET,Post发送和接收数据)

    代码如下:/**************************************************************** * 函数名称:SendCommand(SendMethod method, ST_Param p) * 功能说明:向远程发送URL和参数,接受返回信息(无乱码);...

    xmlhttp.rar_XMLHTTP delphi_delphi xmlHt_delphi xmlhttp_xmlhttp

    这个“xmlhttp.rar”压缩包包含的资源是关于如何在Delphi环境中使用XMLHTTP组件来从网络获取数据,特别是通过调用百度API获取实时时间的示例。这对于初学者来说是一个很好的起点,因为它可以帮助理解如何与Web服务...

    xmlhttp说明文档,xmlhttp中文帮助文档,chm格式

    xmlhttp中文帮助文档 Xmlhttp是一种浏览器对象, 可用于模拟http的GET和POST请求。配合JavaScript可以实现页面数据在无刷新下的定时数据更新,如果应用在聊天室、文字直播上可以取得较好的视觉效果。 使用范例: ...

    VFP xmlHTTP应用实例

    《VFP xmlHTTP应用实例——构建API与三层架构》 Visual FoxPro(VFP)是Microsoft推出的一款数据库开发工具,以其高效、灵活的特点在数据库编程领域占有一定地位。本实例将探讨如何在VFP中利用xmlHTTP对象进行API的...

    利用XMLHTTP技术进行资源整合的研究与实现

    ### 利用XMLHTTP技术进行资源整合的研究与实现 #### 一、引言 随着信息技术的飞速发展,尤其是互联网技术的广泛应用,Web数据库系统已成为学校信息化建设中的重要组成部分。然而,在这一过程中,学校往往面临着...

    XMLHTTP类模块.rar

    8. **源码分析**:分析易语言XMLHTTP类模块的源码可以帮助我们理解它是如何封装和调用底层HTTP通信接口的,以及如何处理异步请求和响应的。 9. **实际应用**:这种类模块常用于Web应用的实时数据更新,如股票报价、...

    易语言xmlhttp简单应用

    易语言XMLHTTP简单应用主要涉及的是使用易语言编程来实现对XMLHTTP接口的调用,以便进行网络数据的请求和处理。XMLHTTP是Microsoft开发的一个组件,它允许程序员通过HTTP或HTTPS协议发送异步HTTP请求,获取服务器...

    XMLHTTP

    XMLHTTP,全称为XMLHttpRequest,是JavaScript中一个用于在后台与服务器进行异步数据交换的关键对象。这个技术的出现极大地推动了Web应用的发展,尤其是在AJAX(Asynchronous JavaScript and XML)模式流行之后,...

    在VC中使用XMLHTTP

    ### 在VC中使用XMLHTTP详解 #### 一、引言 在.NET框架中,通过C#语言使用XMLHTTP进行HTTP请求十分便捷。然而,在传统的Windows应用程序开发环境VC++ 6.0中,开发者可能需要更加深入地了解COM对象模型以及相关的...

    xmlHttp中文参考手册

    XMLHttp中文参考手册是一部专为Java后台程序员设计的实用指南,旨在帮助开发者更好地理解和运用XMLHttpRequest(通常简称为XMLHttp)这一技术。XMLHttp是AJAX(Asynchronous JavaScript and XML)技术的核心组成部分...

    vb6用的xmlhttp模块,get和post方式提交数据,异步获取,不卡死,十分好用

    在VB6中,可以创建一个类模块来封装XMLHTTP的使用,便于管理和复用。 描述中提到的"能有效地解决xmlhttp组件卡死问题",这通常是因为在VB6中直接使用XMLHTTP组件时,如果请求处理时间过长,可能导致UI线程被阻塞,...

    XMLHTTP对象参考手册

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

    xmlhttp

    XMLHTTP的名称虽然包含了XML,但实际上,传输的数据格式不仅限于XML,也可以是JSON、文本或二进制数据等。这一特性使得它在处理各种类型的数据时都非常灵活。 XMLHttpRequest的工作原理: 1. 创建实例:首先,我们...

    易语言源码XMLHTTP方式访问网页.rar

    《易语言XMLHTTP方式访问网页源码解析与应用》 在信息技术日新月异的今天,易语言作为一款中文编程工具,以其独特的图形化编程界面和简洁的语法,深受初级和中级程序员的喜爱。本篇文章将深入探讨易语言通过XMLHTTP...

    Excel vba使用XMLHTTP进行异步下载的演示

    1. **创建XMLHTTP对象**:在VBA代码中,使用`CreateObject("MSXML2.XMLHTTP")`或`New MSXML2.XMLHTTP`创建XMLHTTP对象实例。 2. **设置事件处理程序**:为了跟踪下载进度,我们需要为XMLHTTP对象的`...

    XMLHttp中文参考手册

    XMLHttp中文参考手册是一份详尽的文档,旨在帮助开发者深入了解和有效利用Xmlhttp对象进行Web应用程序的异步通信。Xmlhttp对象,也被称为“AJAX”(Asynchronous JavaScript and XML)的核心,允许网页在不刷新整个...

    详解XMLHTTP控件的应用

    ### 详解XMLHTTP控件的应用 #### XMLHTTP控件简介 XMLHTTP是一个非常重要的控件,主要用于客户端通过HTTP协议与服务器进行通信。该控件在Windows操作系统中是默认自带的,除了Windows 98及更早版本外。简单来说,...

    XMLHTTP参考(HTML格式)

    XMLHTTP是 AJAX(异步JavaScript和XML)技术中的核心组件,它允许Web应用程序在不刷新整个页面的情况下与服务器进行通信,实现数据的动态更新。这个参考手册,以HTML格式呈现,详细介绍了XMLHTTP对象的使用方法,...

Global site tag (gtag.js) - Google Analytics