5.ajax


AJAX的翻译过来就是Asynchronous Javascript and XML(异步的javascript 和XML)

XMLHTTPRequest是AJAX的基础

所有现代浏览器(IE7+、Firefox、Chrome、Safari以及Opera)均内建XMLHttpRequest

1.创建一个XMLHttpRequest

variable = new XMLHttpRequest();

// 老版本的XMLHttpRequest对象创建语法
variable = new ActiveObject("Microsoft.XMLHttp");

为了适应所有版本的浏览器,需要这样创建

var xmlHttp;
if (window.XMLHttpRequest) {
//IE7以上的
    xmlHttp = new XMLHttpRequest()
} else {
//IE7之前的
    xmlHttp = new ActiveObject("Microsoft.XMLHttp")
}

2.XHR的open函数

open函数有三个参数:方法(”get“,”post“)、请求的URL、是否使用异步(boolean)

xmlHttp.open("get", "example", false)

open()方法不会真正的发送请求,而是启动一个请求以备发送。

要发送请求必须调用send()方法。

xmlHttp.send(null)

服务器返回数据后,会自动填充xmlHttp的属性

  • responseText:作为响应主体被返回的文本
  • responseXml:如果响应的类容是”text/xml“或”application/xml“,这个属性中将保存着响应数据的XML DOM文档。
  • status:响应的HTTP状态码
  • statusText:HTTP状态的说明

状态码304表示请求的资源没有被修改,可以直接使用浏览器中缓存的版本

3.XHR的readyState

敲重点!!!真正的异步来了。

发送异步请求,可以检测XHR的readyState属性,该属性表示请求/响应过程中当前活动阶段。取值有:

  • 0:未初始化。尚未调用open()方法
  • 1:启动。已经调用了open()方法,但是没有调用send()方法
  • 2:发送。已经调用了send()方法,但是尚未接收到响应
  • 3:接收。已经收到部分响应数据
  • 4:完成。已经接收全部响应数据,而且已经可以在客户端使用了。

同时,每当readyState由一个状态变为另一个状态,都会触发readystatechange事件。

xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
        if (xmlHttp.status >= 200 && xmlHttp.status < 300 || xmlHttp == 304) {
            alert(xmlHttp.responseText);
        } else {
            alert("Request was unsuccessful:" + xhr.status);
        }
    }
}

results matching ""

    No results matching ""