之前在项目中经常用jquery ajax进行局部刷新,最近想来仅仅是用而且,对于它是怎么个回事一窍不通哈。今天开始,学习下ajax。
ajax(Asynchronous JavaScript and XML)并不是一门新的技术而是html,javascrpit,dom,css等技术的结合。ajax的核心是javaScript的对象XMlHttpResquest对象。通过XMlHttpResquest对象的属性和方法来和服务器进行通信。几乎每个浏览器都有用javaScprit编写的ajax引擎。用户发送ajax请求,就跑到了ajax引擎,然后任ajax引擎去与服务器进行互动,用户自己再去干自己的事,从而也就实现了异步。
参考文档:ajax.chm
XMLHttpRequest对象的使用。
1.创建HttpRequestXml对象(ie 和非ie)可以从ajax.chm手册中查到
2.打开和服务器的链接 open(menthod,url+new Date().getTime(),asynch)其中url一般加上时间措,以避免多次点击同一个url事,从缓存中取数据
3.发送数据 send(data) 如果是get方式,则为send(null).
4.接受服务器端的响应(在ajax执行过程中服务器会通知客户端的通信状态。依靠XMLHttpRequest对象的readyState来实现。每次改变,会触发readyStateChange事件
XMLHttpRequest的readyState属性表示ajax请求的当前状态.
0代表未初始化。还没调用open方法。
1代表正在加载。open调用,但send()方法没调用
2代表加载完毕。send被调用。请求开始
3代表交互中。服务器正字发送响应
4代表完成。响应发送完毕)。
客户端是怎么样接受到服务器发送的响应的呢???返回的数据放在 XMLHttpRequest.responseText 或者responseHTML中
xmlHttpRequest.readystatechange(){//第四步应该放到第一步的下面
if(xmlHttpRequest.readyState==4){
//信息成功返回 200 没有被修改 304
if(xmlHttpRequest.status==200|| xmlHttpRequest.status==304){
alter(xmlHttpRequest.responseText);
}
}
}