AJAX (Asynchronous Javascript And XML)
你看到一个网页代码,网页里有script代码,script里面有XMLHttpRequest
于是基本可以确定你在看一个应用了ajax的网页
AJAX就是这么简单
在javascript里定义一些XMLHttpRequest,通过.open和.send来设定并执行一些行为。
通过onreadystatechange里面 定义对不同的readystate有什么样的行为并针对不同状态改变DOM架构的网页内容(当然不用DOM也没所谓)
于是就结束了
我们看下涉及到了哪些点
1.XMLHttpRequest
技术上来讲, 这个对象是ajax的核心,所有的东西都从这个上引出
IE5.0之前放弃吧,就压根没支持,5.0到7.0用ActiveXObject 之后听说是与firefox一致将其视为javascript对象了
所以一般来讲会列出几种
xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP.3.0"); xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP"); xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp_request = new XMLHttpRequest();
有兴趣的自己可以查下 若你做的网页想在所有浏览器上都可以正常工作的话。
它的内部包含了以下对象和方法
对象
readyState 请求的状态 0=初始化 1=读取中 2=已读取 3=交互中 4=完成
onreadystatechange 一个事件触发器,只要readyState改变了 就会被触发
status 包含正常的HTTP请求可能出现的status 比如 200是成功 404是页面没找到 等等。
statusText 请求后服务端返回的状态文本,只有readyState的值为3或者4的时候 才有用
responseText 服务端返回信息的文本形式
responseXML 服务端返回信息的XML对象(兼容DOM),当readyState为3或者4的时候,一般Content-Type=text/xml或application/xml
方法
open方法 用来设定请求的行为模式及参数
open(act, url, async)
一般3个参数,第一个是HTTP行为模式(GET, POST, PUT, DELETE,HEAD),第二个是URL, 第三个是是否为异步
GET是取得页面,POST以表单方式提交并取得相应反馈页面,PUT为创建保存行为,DELETE为删除行为,HEAD为只收取相应页面的HEAD部分(写过HTML的都该知道什么是head部分吧)
send方法 用来发送请求
send(var)
有一个参数,在你什么都不想做的时候 直接写个null就好,若是有东西要post过去的话 也可以在这里写 若是open中的是否异步为真的时候将立刻返回 继续程序流程
abort方法 用来取消请求
abort()
无参数 用来取消请求 将其readyState重置为0
setRequestHeader()方法 用于设置发出请求的head
setRequestHeader(DOMString head, DOMString value)
两个参数,要求是DOMString类型的head以及value, 只能在readyState=1的时候使用 否则 将返回异常
getRequestHeader()方法 用于得到响应的head
getRequestHeader(DOMString head)
一个参数 要求是DOMString类型, 在readyState为3或4之前 只能得到空
getAllRequestHeader()方法 用于得到所有响应的head
getAllRequestHeader()
无参数 在readyState为3或4之前 只能得到空,得到的每个head信息将单独作为一行
大概就这么多了 各位应用的时候多尝试就知道了