书归正传,AJAX其实不是一种语言,甚至不是一种技术,它是几种技术的有机结合(Javascript、XML、CSS等等,其实有时还会用到更多的技术,比如偶钟情滴java^_^,就像推War3,要多个兵种加起来用才够厉害。。。跑题了~~~~)。Javascript作为脚本语言,用Javascript操作XML和CSS,用XML做为数据的存储介质,用CSS显示效果和状态。
这里不得不提的一项内容就是XMLHttpRequest,偶认为这是真正Ajax的核心东东(可能是偶见识太少了- -!),它可以模拟Request对象向服务器提交请求,并返回请求结果,这就摒弃了原有的让人等的好烦的白白的浏览器显示页!!用句不怎么术的术语说就是“动态无刷新”。废话不说,来看看这么强大的DD是怎么实现的~~~
不同的浏览器实现的方式不一样,对于Mozilla, Firefox, Safari, 和Netscape浏览器:
var xmlhttp=new XMLHttpRequest()
对于Internet Explorer:
var xmlhttp=CreatActiveObject("Micosoft.XMLHttp")
编程要点:
---------------------------属性--------------------------------
属性
值类型
说明
onreadystatechange
回调函数名称的字符串
指明回调函数
readyState
请求状态代码,共四种状态:
0 未初始化
1 正在装载
2 装载完毕
3 交互中
4 完成
XMLHttpRequest对象的请求状态
responseText
返回数据的字符串形式
以字符串形式存储该请求返回的数据
responseXML
返回一个Xml Document对象
以XML数据形式存储请求返回的数据
status
请求所返回的HTTP返回码:
"100" : Continue
"101" : witching Protocols
"200" : OK
"201" : Created
"202" : Accepted
"203" : Non-Authoritative Information
"204" : No Content
"205" : Reset Content
"206" : Partial Content
"300" : Multiple Choices
"301" : Moved Permanently
"302" : Found
"303" : See Other
"304" : Not Modified
"305" : Use Proxy
"307" : Temporary Redirect
"400" : Bad Request
"401" : Unauthorized
"402" : Payment Required
"403" : Forbidden
"404" : Not Found
"405" : Method Not Allowed
"406" : Not Acceptable
"407" : Proxy Authentication Required
"408" : Request Time-out
"409" : Conflict
"410" : Gone
"411" : Length Required
"412" : Precondition Failed
"413" : Request Entity Too Large
"414" : Request-URI Too Large
"415" : Unsupported Media Type
"416" : Requested range not satisfiable
"417" : Expectation Failed
"500" : Internal Server Error
"501" : Not Implemented
"502" : Bad Gateway
"503" : Service Unavailable
"504" : Gateway Time-out
"505" : HTTP Version not supported
其实实际用的时候记着200是OK(本地调试时OK状态会返回0),404是NO FOUND就可以了!
该XMLHttpRequest所做的请求返回的HTTP返回码
statusText
字符串,此属性只读,以BSTR返回当前请求的响应行状态,此属性仅当数据发送并接收完毕后才可获取。
XMLHttpRequest所做的Http请求返回信息
---------------------------方法---------------------------
方法
参数
返回值
说明
abort()
无
无
取消当前的请求
getAllResponseHeaders()
无
以字符串形式返回所有的HTTP头
以字符串形式返回所有的HTTP头
getResponseHeader("headerName")
headerName参数指定的http头字符串
返回指定的HTTP头字符串
从响应信息中获取指定的http头
open('method','URL',async,'uname','pswd')
method字符串指定用何方法发送请求,比如POST、GET、PUT及PROPFIND。大小写不敏感
URL字符串指定请求的HTTP地址,可以为绝对路径也可以为相对路径
async布尔值指定请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。
uname字符串指定用于服务器验证用户名,如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。
pswd字符串指定验证信息中的密码部分,如果用户名为空则此部分被忽略。
无
创建一个新的http请求,并指定此请求的方法、URL以及验证信息
send(content)
content参数可以是任何想发送到服务器端的数据
无
发送请求到http服务器并接收回应,此方法的同步或异步方式取决于open方法中的bAsync参数,如果bAsync == False,此方法将会等待请求完成或者超时时才会返回,如果bAsync == True,此方法将立即返回。如果发送的数据为XML DOM object,则回应将被编码为在xml文档中声明的编码,如果在xml文档中没有声明编码,则使用默认的UTF-8。
setRequestHeader("label","value")
label字符串指定头名称
value字符串指定头的值
单独指定请求的某个http头,如果已经存在已此名称命名的http头,则覆盖之。此方法必须在open方法后调用。