AJAX的基本原理之XMLHttpRequest

AJAX的基本原理

AJAX 组成
1.表示      XHTML+CSS
2.动态显示和交互 DOM
3.数据交互和操作 XML、XSLT
4.异步数据获取  XMLHttpRequest
5.绑定和处理数据 JavaScript

----------------------------------------
AJAX 基本流程

             提交
1.   XMLHttpRequest————>请求

         返回          分析
2、3. 服务器————>数据———-->JavaScript处理------>html呈现


 XMLHttpRequest 对象属性
 XMLHttpRequest是XMLHttp组件的对象,通过这个对象,Ajax可以像桌面应用程序一样只与服务器进行数据层的交换,而不必每次都刷新界面,也不必每次将数据处理的工作都交给服务器来做;这样既减轻了服务器负担又回忆了响应速度,缩短了用户的等待时间。

 onreadystatechange:指定当readyState属性改变时的事件处理句柄,属性只写。
    XMLHttpRequest对象属性onreadystatechange是readyState状态改变的事件触发器,用来指定当readyState属性发生改变时的处理事件。

在使用过程中,通常通过将事件处理函数名称赋予onreadystatechange的方式,来为XMLHttpRequest指定事件触发器,而在事件处理函数中判

断readyState状态值并做相应的处理。
    如上:http_request.onreadystatechange = processRequest;processRequest作为事件处理函数,并在processRequest函数体内在

readyState状态为 4 时开始执行。
 readyState:返回当前请求的状态,属性只读。
    这些状态用长度为4的整形数据表示,其属性的状态含义如下:
    0:未初始化(对象已经建立,但是未初始化,即尚未调用open方法创建http请求)
    1:初始化(对象已经建立,但是未调用send方法发送http请求)
    2:发送数据(send方法已经被调用,但是当前的状态以及http头未知)
    3:数据传送中(已经接收部分数据,因为响应及http头不全,这时通过response系统方法获取部分数据会出现错误)
    4:传送完成(数据完毕,此时可以通过response系统方法获取完整的回应数据)
 responseBody:将回应信息正文以unsigned byte 数组形式返回,属性只读。
 responseText:以字符串的形式返回服务器响应信息,属性只读。
 responseXML:将响应信息格式化为XML Document对象返回,属性只读。
  
    XMLHttpRequest对象的方法以及含义如下:
    abort:取消当前请求;
        语法:http_request.abort();调用此方法,当前请求返回uninitialized状态。
    getAllResourceHeaders:获取相应的全部http头信息;像JSP中的HttpServletRequest对象一样,获取http请求的     请求头信息,语法

:headers = http_request.getAllResourceHeaders();
    getResourceHeader:从响应信息中获取指定的http头信息。
        语法:head = http_request.getResourceHeader("header-name");
    open:创建一个新的http请求,并指定此请求的方法,URL,以及验证信息(用户名/密码)。
        语法:http_request.open(method,url,async,user,password);
        async为布尔值,指定请求是否异步方式,默认为true;如果为真,当state状态改变时会调用onreadystatechange属性指向的回调函数

。如果服务器需要验证,则应该指定用户名和密码 。
    send:发送请求到http服务器并接收回应。创建http请求后,就可以向服务器发送http请求,send方法被调用
       语法:http_request.send(varBody);
      参数varBody为要发送给服务器的内容。如果没有内容要发送,varBody参数可以省略,但最好写为null,因为如果省略不写在Firfox中会

报错,所以就为http_request.send(null);。此方法的同步或异步方式取决于open方法中的async参数。
    setRequestHeader:单独设定请求的某个头。
 status:返回当前HTTP请求的状态码,属性只读。如:404=“文件未找到”,200=“成功”
 statusText:返回当前HTTP请求的状态行,属性只读。

XMLHttpRequest 的创建

<script language="javascript" type="text/javascript">

var request;

function createRequest() {
 try {
  request = new XMLHttpRequest();
 } catch (trymicrosoft) {
  try {
   request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
   try {
    request = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (failed) {
    request = false;
   }
  }
 }

 if (!request)
  alert("Error initializing XMLHttpRequest!");
}
</script>

posted @ 2008-08-01 09:29  EricWen  阅读(844)  评论(1编辑  收藏  举报