书归正传,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方法后调用。 |