2006-11-27 09:31
作者:
朱先忠
编译
出
处
:
天极
软
件
责
任
编辑
:
>
方舟
http://dev.yesky.com/91/2687091.shtml
XMLHttpRequest
对
象是当今所有
AJAX
和
Web 2.0
应
用程序的技
术
基
础
。尽管
软
件
经销
商和
开
源社
团现
在都在提供各
种
AJAX
框架以
进
一
步简
化
XMLHttpRequest
对
象的使用;但是,我
们
仍然很有必要理解
这
个
对
象的
详细
工作机制。
一、
引言
异
步
JavaScript
与
XML(AJAX)
是一个
专
用
术语
,用于
实现
在客
户
端脚本与服
务
器之
间
的数据交互
过
程。
这
一技
术
的
优
点在于,它向
开发
者提供
了一
种
从
Web
服
务
器
检
索数据而不必把用
户
当前正在
观
察的
页
面回
馈给
服
务
器。与
现
代
浏览
器的通
过
存取
浏览
器
DOM
结
构的
编
程代
码
(JavaScript)
动态
地改
变
被
显
示内容的支持相配合,
AJAX
让开发
者在
浏览
器端更新被
显
示的
HTML
内容而不必刷新
页
面。
换
句
话说
,
AJAX
可以使基于
浏览
器的
应
用程序
更具交互性而且更
类
似
传统
型桌面
应
用程序。
Google
的
Gmail
和
Outlook Express
就是两个使用
AJAX
技
术
的我
们
所熟悉的例子。而且,
AJAX
可以用于任何客
户
端脚本
语
言中,
这
包括
JavaScript
,
Jscript
和
VBScript
。
AJAX
利用一个构建到所有
现
代
浏览
器内部的
对
象
-XMLHttpRequest-
来
实现发
送和接收
HTTP
请
求与响
应
信息。一个
经
由
XMLHttpRequest
对
象
发
送的
HTTP
请
求并不要求
页
面中
拥
有或回寄一个<
form
>元素。
AJAX
中的
"A"
代表了
"
异
步
"
,
这
意味着
XMLHttpRequest
对
象的
send()
方法可以立即返回,从而
让
Web
页
面上的其它
HTML/JavaScript
继续
其
浏览
器端
处
理而由服
务
器
处
理
HTTP
请
求并
发
送响
应
。尽管缺省情况下
请
求是异
步进
行的,但是,你可以
选择发
送同
步请
求,
这
将会
暂
停其它
Web
页
面的
处
理,直到
该页
面接收到服
务
器的响
应为
止。
微
软
在其
Internet Explorer(IE) 5
中作
为
一个
ActiveX
对
象形式引入了
XMLHttpRequest
对
象。其他的
认识
到
这
一
对
象重要性的
浏览
器制造商也都
纷纷
在他
们
的
浏览
器内
实现
了
XMLHttpRequest
对
象,但是作
为
一个本地
JavaScript
对
象而不是作
为
一个
ActiveX
对
象
实现
。而如今,在
认识
到
实现这
一
类
型的价
值
及安全性特征之后,微
软
已
经
在其
IE 7
中把
XMLHttpRequest
实现为
一个窗口
对
象属性。幸运的是,尽管其
实现
(
因而也影响到
调
用方式
)
细节
不同,但是,所有的
浏览
器
实现
都具有
类
似
的功能,并且
实质
上是相同方法。目前,
W3C
组织
正在努力
进
行
XMLHttpRequest
对
象的
标
准化,并且已
经发
行了有
关该
W3C
规
范的一个草案。
本文将
对
XMLHttpRequest
对
象
API
进
行
详细讨论
,并将解
释
其所有的属性和方法。
二、
XMLHttpRequest
对
象的属性和事件
XMLHttpRequest
对
象暴露各
种
属性、方法和事件以便于脚本
处
理和控制
HTTP
请
求与响
应
。下面,我
们
将
对
此展
开详细
的
讨论
。
readyState
属性
当
XMLHttpRequest
对
象把一个
HTTP
请
求
发
送到服
务
器
时
将
经历
若干
种
状
态
:一直等待直到
请
求被
处
理;然后,它才接收一个响
应
。
这样
以来,
脚本才正确响
应
各
种
状
态
-XMLHttpRequest
对
象暴露一个描述
对
象的当前状
态
的
readyState
属性,如表格
1
所示。
表格
1.XMLHttpRequest对
象的
ReadyState属性
值
列表。
ReadyState取
值
|
描述
|
0
|
描述一
种
"
未初始化
"
状
态
;此
时
,已
经创
建一个
XMLHttpRequest
对
象,但是
还
没有初始化。
|
1
|
描述一
种
"发
送
"状
态
;此
时
,代
码
已
经调
用了
XMLHttpRequest
open()方法并且
XMLHttpRequest已
经
准
备
好把一个
请
求
发
送到服
务
器。
|
2
|
描述一
种
"
发
送
"
状
态
;此
时
,已
经
通
过
send()
方法把一个
请
求
发
送到服
务
器端,但是
还
没有收到一个响
应
。
|
3
|
描述一
种
"
正在接收
"
状
态
;此
时
,已
经
接收到
HTTP
响
应头
部信息,但是消息体部分
还
没有完全接收
结
束。
|
4
|
描述一
种
"
已加
载
"
状
态
;此
时
,响
应
已
经
被完全接收。
|
onreadystatechange事件
无
论
readyState值
何
时发
生改
变
,
XMLHttpRequest对
象都会激
发
一个
readystatechange事件。其
中,
onreadystatechange属性接收一个
EventListener值
-向
该
方法指示无
论
readyState值
何
时发
生改
变
,
该对
象都将
激活。
responseText属性
这
个
responseText属性包含客
户
端接收到的
HTTP响
应
的文本内
容。当
readyState值为
0、
1或
2时
,
responseText包含一个空字符串。当
readyState值为
3(正在接收
)时
,响
应
中包含客
户
端
还
未完成的响
应
信息。当
readyState为
4(已加
载
)时
,
该
responseText包含完整的响
应
信息。
responseXML属性
此
responseXML属性用于当接收到完整的
HTTP响
应时
(readyState为
4)描述
XML响
应
;此
时
,
Content-Type头
部
指定
MIME(媒体
)类
型
为
text/xml,
application/xml或以
+xml结
尾。如果
Content-Type头
部并不包含
这
些媒体
类
型之
一,那
么
responseXML的
值为
null。无
论
何
时
,只要
readyState值
不
为
4,那
么该
responseXML的
值
也
为
null。
其
实
,
这
个
responseXML
属性
值
是一个文档接口
类
型的
对
象,用来描述被分析的文档。如果文档不能被分析
(
例如,如果文档不是良构的或不支持文档相
应
的字符
编码
)
,那
么
responseXML
的
值
将
为
null
。
status
属性
这
个
status
属性描述了
HTTP
状
态
代
码
,而且其
类
型
为
short
。而且,
仅
当
readyState
值为
3(
正在接收中
)
或
4(
已加
载
)
时
,
这
个
status
属性才可用。当
readyState
的
值
小于
3
时试图
存取
status
的
值
将引
发
一个异常。
statusText
属性
这
个
statusText
属性描述了
HTTP
状
态
代
码
文本;并且
仅
当
readyState
值为
3
或
4
才可用。
当
readyState为
其它
值时试图
存取
statusText属性将引
发
一个异常
。
分享到:
相关推荐
### 全面剖析XMLHttpRequest对象 #### 引言:AJAX与XMLHttpRequest的革命 XMLHttpRequest对象是现代网络开发中不可或缺的一部分,它是AJAX(Asynchronous JavaScript and XML)技术的核心,使得网页能够在不重新...
### 全面剖析XMLHttpRequest对象 #### 引言 随着互联网技术的发展,用户对Web应用的需求日益增长。其中,异步JavaScript与XML(AJAX)技术作为一种新兴的技术手段,在实现客户端脚本与服务器之间高效、无缝的数据...
### 全面剖析XMLHttpRequest对象 #### 一、XMLHttpRequest对象简介 XMLHttpRequest是一个非常重要的JavaScript对象,它允许网页向服务器发起异步请求并处理响应数据。这种技术是实现Ajax(Asynchronous JavaScript...
XMLHttpRequest对象是Ajax技术的核心,它是现代Web应用中用于实现客户端与服务器间异步数据交换的关键组件。在不刷新整个页面的情况下,XMLHttpRequest允许开发者通过JavaScript动态更新网页内容,极大地提升了用户...
表格 1.XMLHttpRequest 对象的 ReadyState 属性值列表 | ReadyState 取值 | 描述 | | --- | --- | | 0 | 未初始化状态 | | 1 | 发送状态 | | 2 | 发送状态 | | 3 | 正在接收状态 | | 4 | 已加载状态 | 2. ...
### 全面剖析XMLHttpRequest XMLHttpRequest是一种在浏览器端实现异步数据请求的关键技术,它为Web应用提供了更丰富的交互体验。本文将深入探讨XMLHttpRequest的相关知识点,包括其工作原理、状态管理以及如何通过...
AJAX最大的特点就是其"异步"性,这意味着当XMLHttpRequest对象的send()方法被调用时,它会立即返回,允许浏览器继续执行其他操作,比如处理用户输入或更新页面的显示,而不会被阻塞等待服务器的响应。这样一来,页面...
接下来,文章通过结合实例的形式,深入剖析了XMLHttpRequest对象的工作原理以及如何在实际开发中有效地使用它。 首先,文章对Ajax和XMLHttpRequest这两个概念进行了区分。Ajax并不是一种新技术,而是依赖于已有的...
1. **初始化XMLHttpRequest对象**:首先创建XMLHttpRequest对象实例。 2. **打开连接**:使用open()方法指定请求类型(GET、POST等)、URL和是否异步执行。 3. **设置请求头**:如果需要发送数据,可以设置请求头...
值得注意的是,正是通过XMLHttpRequest对象,JavaScript得以与服务器进行异步通信,这也是AJAX技术之所以强大的关键所在。 #### 五、AJAX的优势 1. **提升用户体验**:通过局部更新页面内容,减少了页面加载时间,...
这个函数利用了浏览器内置的 `XMLHttpRequest` 对象或在旧版本的 Internet Explorer 中使用的 ActiveXObject 来实现异步通信。以下是关于 `downloadUrl()` 函数的详细解释: 1. **参数说明**: - `url`:必填参数...
Ajax技术部分,详细剖析了XMLHttpRequest对象,以及如何使用POST和GET方法提交Ajax请求。Ajax技术是实现Web页面异步交互的关键。 jQuery部分,介绍了jQuery的入门使用,包括jQuery的选择器、对象转换以及事件处理。...