首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

上文中已经提到过,作为Ajax的核心,XMLHttpRequest对象负责向服务器发送请求并处理服务器的响应。目前版本的IEActiveX组件的形式实现了XMLHttpRequest对象;在其他浏览器,例如FirefoxSafariOpera中,XMLHttpRequest对象是以原生的JavaScript对象的形式提供的。不幸的是,因为存在上述差别,JavaScript代码需要检查浏览器类型,并根据检查结果选择并使用恰当的XMLHttpRequest对象。(在最新的IE7中,微软也将以原生的JavaScript对象形式支持XMLHttpRequest对象。)

令人欣慰的是,相比为了在浏览器之间实现同样的DOM操作而书写的那些意大利面条般的混乱代码,上述过程还是简单了一些:

这段代码比较简单。如果你的浏览器不支持ActiveX对象,调用window.ActiveXObject将返回null,这样xmlHttp对象将被实例化为一个XMLHttpRequest对象(原生的JavaScript对象);否则,xmlHttp对象将被实例化为一个类型为Microsoft.XMLHTTPActiveX对象。

现在已经拥有了一个XMLHttpRequest对象,可以尝试着使用它的属性和方法了。在下面的几段中,我将讨论一些使用XMLHttpRequest对象时常用的方法。

open方法用来初始化对服务器的请求。该方法有两个必需的参数(HTTP请求的类型——GETPOST或者PUT,以及将调用的服务器端资源的URL)和三个可选的参数(一个布尔值,代表是否要以异步的形式发送请求,默认值为true;两个字符串,分别代表若服务器需要安全验证时的用户名和密码)。open方法返回void

send方法将请求发送给服务器,它接受一个参数,可随请求传递给服务器一些相关内容。如果该XMLHttpRequest对象被声明为异步的(使用上面open方法中提到的那个布尔参数),send方法将立即返回。否则,send方法将被阻塞,直到收到服务器的响应。send方法的那个相关内容参数(该参数是可选的)可以被设定为DOM对象、输入流或是字符串。

setRequestHeader方法接受两个参数:一个代表首部名称的字符串和一个代表该首部值的字符串。此方法用来设定超文本传输协议HTTP)中的首部值。

XMLHttpRequest对象的getAllResponseHeaders方法将返回一个字符串,包含服务器响应中的所有首部信息。例如HTTP 首部中的Content-LengthDate等,以及它们相对应的值。getAllResponseHeaders方法接受一个代表首部名称的字符串参数,并返回一个字符串,代表这个首部的值。

除了这些方法之外,XMLHttpRequest对象还支持许多属性,由表1-1列出:

1-1  XMLHttpRequest对象的标准属性集合

   

   

onreadystatechange

指定当XMLHttpRequest对象的状态变化时调用的函数名称

readyState

当前请求的状态(0:未初始化,1:装载中,2:装载完毕,3:交互中,4:完成)

responseText

以字符串表示的服务器的当前响应

responseXML

XML表示的服务器的当前响应

status

服务器的当前HTTP状态码(例如,404代表未找到请求资源(Not Found))

statusText

以文字形式表示的服务器的当前HTTP状态(例如Not Found

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论