- 浏览: 405915 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
liyuanhoa_:
...
struts2.0中struts.xml配置文件详解 -
chenmingde:
...
Velocity应用(一) -
weizhikai_ai:
第二十六,当一个线程进入一个对象的一个synchronized ...
Java常见面试题(含答案) -
Aurora_lr:
...
Spring宠物商店学习笔记(一) - -
zs911zs:
all copy from http://www.iteye ...
Mule入门文档
虽然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对象:
Java代码
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) {
}
}
}
}
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进行封装?
继续中。。。。。。。。
对于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对象:
Java代码
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) {
}
}
}
}
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进行封装?
继续中。。。。。。。。
- XMLHTTP_手册.rar (17.7 KB)
- 下载次数: 17
评论
1 楼
hax
2009-02-09
progId方面,微软IE团队的官方blog推荐你这样写:
['MSXML2.XMLHTTP.3.0', 'Microsoft.XMLHTTP']
或
['Msxml2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'Microsoft.XMLHTTP']
4.0和5.0是为特殊应用准备的。
MSXML2.XMLHTTP等价于MSXML2.XMLHTTP.3.0
而且实际上,通常没有必要使用Msxml2.XMLHTTP.6.0,所以建议你使用第一种。
['MSXML2.XMLHTTP.3.0', 'Microsoft.XMLHTTP']
或
['Msxml2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'Microsoft.XMLHTTP']
4.0和5.0是为特殊应用准备的。
MSXML2.XMLHTTP等价于MSXML2.XMLHTTP.3.0
而且实际上,通常没有必要使用Msxml2.XMLHTTP.6.0,所以建议你使用第一种。
发表评论
-
初识Firebug 全文 — firebug的使用
2009-02-09 14:53 1238http://www.ooso.net/index.php/a ... -
web.xml详解
2008-12-31 18:03 6442部署描述符实际上是一 ... -
Windows下svn客户端TortoiseSVN的安装和操作
2008-12-23 17:15 2865介绍几家免费提供svn源代码管理的站点 国内: http:/ ... -
Ant入门
2008-12-19 12:07 2030一. 配置环境变量 1. 添加ANT_HOME—— ... -
xfire定义
2008-12-19 10:44 1337XFire是新一代的Java Web服 ... -
JSTL定义
2008-12-19 10:00 1002JSTL(JSP Standard Tag Lib ... -
UDDI定义
2008-12-19 09:47 1358UDDI Universal Descripti ... -
SOA定义
2008-12-19 09:47 1078向服务的体系结构(Serv ... -
SOAP定义
2008-12-19 09:43 1439soap n. (英文)肥皂 SOAP:简单对象访 ... -
XMLHttpRequest对象
2008-12-18 17:35 825<%@ page contentType="t ... -
掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
2008-12-17 11:53 828在 Web 请求中使用 XMLHttp ... -
掌握 Ajax 系列 一 Ajax 入门简介
2008-12-16 17:17 752Ajax 由 HTML、JavaScript™ ... -
响应重定向与请求转发
2008-12-16 12:16 2146摘要在javaEE Web组件开发中,页面之间的跳转无疑是必不 ... -
Struts分页的一个实现
2008-12-16 10:43 794在Web应用程序里,分页总让我们开发人员感到很头疼,倒不是因为 ... -
Tapestry 建立自己得 Validator
2008-12-11 17:07 858今天介绍一下如何建立自己得Validator 1. 建立Val ... -
正则表达式之道
2008-12-11 17:05 1138正则表达式之道 原 ... -
ognl的学习例子
2008-12-10 14:39 2090原贴见:http://blog.csdn.ne ... -
TextArea 组件
2008-12-09 20:55 1647A) Insert 组件 e.g. <in ... -
了解 Tapestry,第 1 部分
2008-12-09 15:16 1400在这篇由两部分构成的文章的前一部分中,作者兼 develope ... -
JS中文长度校验
2008-12-05 17:23 1457function changeAlert() { v ...
相关推荐
Xmlhttp用来获取web网页的源码,这里是用vb6编写的源码。
XmlHttp手册XmlHttp手册XmlHttp手册XmlHttp手册XmlHttp手册
XMLHTTP封装类可以向远程发送URL和参数,接受返回信息(无乱码)
xmlhttp中文帮助文档 Xmlhttp是一种浏览器对象, 可用于模拟http的GET和POST请求。配合JavaScript可以实现页面数据在无刷新下的定时数据更新,如果应用在聊天室、文字直播上可以取得较好的视觉效果。 使用范例: ...
介绍xmlhttp比较的详细
易语言xmlhttp简单应用源码,xmlhttp简单应用
XMLHTTP类模块.rar XMLHTTP类模块.rar XMLHTTP类模块.rar XMLHTTP类模块.rar XMLHTTP类模块.rar XMLHTTP类模块.rar
最近有一些朋友问我XMLHTTP对象到底是什么,有什么用。考试完了我反正没什么事,就写了篇文章详细地介绍一下Microsoft.XMLHTTP对象的使用,文章浅显,主要针对对这个对象不太了解的人。 首先,Microsoft.XMLHTTP是一...
最通用的定义为:XmlHttp是一套可以在...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
一个完整的ajax xmlHttp请求类的封装,兼容多种浏览器,包括了对返回数据的处理。
xmlhttp对象_VC中调用XMLHTTP对象访问
手写ajax的xmlhttp协议,创建ajax
xmlhttp详细帮助文档 xmlhttp详细帮助文档 xmlhttp详细帮助文档
易语言XMLHTTP方式访问网页源码,XMLHTTP方式访问网页,XmlHttp
xmlhttp各版本速度比较.rar xmlhttp各版本速度比较.rar xmlhttp各版本速度比较.rar xmlhttp各版本速度比较.rar xmlhttp各版本速度比较.rar xmlhttp各版本速度比较.rar
XmlHttp对象参考XmlHttp对象参考XmlHttp对象参考XmlHttp对象参考XmlHttp对象参考XmlHttp对象参考XmlHttp对象参考
xmlHttp中文参考手册,纯中文,为java后台程序员开发方便而上传