1.什么是Ajax?
Ajax(即异步 JavaScript 和 Xml)是一种web应用程序开发的手段,它采用客户端脚本与web服务器交换数据
Ajax不是一项技术,而更像是一个模式-------一种识别和描述有用的设计技术的方式
2.普通的web应用模型和Ajax的web应用模型
web应用模型:用户接口----(HttpRequest)(Html+css)----web服务器----数据存储
Ajax应用模型:用户接口----(JavaScript Call)(Html+css)----Ajax 引擎----(HttpRequest)(XML Data)---web服务器----数据存储
3.普通的web应用的同步交互和Ajax的web应用的异步交互
4.Ajax交互流程
1.用户在web页面的交互动作触发DOM事件
2.DOM事件处理者收到事件发生的消息处理
3.事件处理者创建XMLHttpRequest对象,设置目标URL,HTTP方法(get,post)等内容,注册服务器响应的回调函数
4.向服务器发出异步的HTTP请求
5.异步请求发出后,浏览器不必等待服务器响应用户可以继续与页面交互
6.服务器收到请求后,指派对应的 servlet 处理对应逻辑
7.将结果数据序列化成XML作为响应内荣,返回给浏览器
8.调用在XMLHttpRequest对象上注册的回调函数
9.回调函数解析响应内容XML文档,依据其中的数据使用javaScript操纵DOM对象更新页面内容
5.使用Ajax 技术要考虑一下情况
1.XMLHttpRequest 的可用性
2.用户可用性考虑
3.服务器负载
4.处理异步
总之,创建成功的Ajax 应用程序要求整体考虑,从UI设计到javaScript设计,再到服务器端架构
6.Ajax的核心技术----XMLHttpRequest
---XMLHttpRequest对象简介
1.XMLHttpRequest对象是整个Ajax开发的基础
2.提供客户端和服务器异步通信的能力
3.能够向服务器发出请求
4.能够接受服务器的返回页面
5.最早出现在IE,随着应用的广泛,渐渐推广到其他浏览器中
---使用XMLHttpRequest对象和服务器通信
---使用实例
XMLHttpRequest对象创建
1.创建XMLHttpRequest对象
---不同的浏览器创建方法不同
---IE5.0创建代码 new ActionXObject('XMsxm12.XMLHTTP')
---IE5.5或以上创建代码 new ActionXObject('Microsoft.XMLHTTP')
---不支持ActiveX控件的浏览器创建代码 new XMLHttpRequest()
----一般用三层嵌套方式来创建
XMLHttpRequest对象属性
---就绪状态 readvstate 描述 Http请求的状态
0 表示未初始化,即XMLHttpRequest对象未创建open()方法未调用
1 表示XMLHttpRequest对象被创建,但请求未发出send()未调用
2 表示Http请求已经发出正在处理中,这时可以取得Http头信息,但是Http内不可用
3 表Http响应内容部分数据可用,但响应还没有完成
4 表示服务器响应完成,可以从属性 responseBody,responseText中获得完整响应内容
----响应主体responseBody:以无符号字节数组描述响应内容正文
---响应流 responseStream,以IStream(二进制数据流)形式描述响应内容正文
----响应文本responseText 响应内容正文的纯文本形式
----响应XML responseXML 以XML Dom描述响应内容正文,常用
----状态代码 status: HTTP状态码,常见的有200,404等
----onreadystatechange 指定当发生就绪状态变更事件时的处理者,通常是javaScript 函数
---XMLHttpRequest对象的方法
-----abort 取消当前的HTTP请求
-----getResponseHeader 获得响应内容得HTTP头信息
-----open 初始化一个HTTP请求,指定请求方法(get/post)url ,身份验证信息等
-----send 发出一个Http请求道服务器
-----setRequestHeader: 设置Http请求的头信息
-----XMLHttpRequest对象方法
----用open方法创建一个请求
----open
----method 请求类型 get或 post
----url 请求地址,可以绝对也可以相对,可以附带查询字符串
----Asynchronous 可选参数,请求同步还是异步,默认为 true 同步
----user.pwd 可选参数,请求的用户名和密码,没有则省略
----如果使用"get"方式发出请求,可以用下述方法
-----url = "ajax.jsp?aa=bb&&cc=dd"; xmlhttp.open("get",url);Xmlhttp.send(null);
----如果使用"get"方式发出请求,可以用下述方法
-----url = "ajax.jsp?aa=bb&&cc=dd"; xmlhttp.open("post",url);Xmlhttp.send(body);
注意:如果url中包括查询字符转,则会显示在浏览器地址栏中
-----用send方法发送一个请求
--send(body) body为参数,表示发送至服务器的数据,格式为查询字符转格式 例 body = "username=aa&&password=bb"
-----同步还是异步
如果使用同步方法,执行完send方法后阻塞,直到请求完成或超时才执行下一句语句
如果使用异步方法,执行完send方法后阻塞,立即执行下一句语句
-----XMLHttpRequest对象应用
使用onreadystatechange 事件捕获请求的状态变化
xmlhttp.onreadystatechange =function(){
..................事件处理代码
}
xmlhttp.open();
xmlhttp.send();
---事件绑定代码必须先于 open和 send 代码,否则可能引起事件代码无法得到执行
-----使用readyState 属性判断请求状态
1.0 初始值,表示对象建立,但未初始化,此时没有调用 open
2.1 open 已调用,为调用send
3.2 send已调用,其他数据未知
4..3请求已经成功发送,正在接受数据
5.4 数据接收完成
-----使用 status 属性判断请求结果
status值---
200 请求成功
202 请求被接受,但是未处理完成
400 错误的请求
404 请求资源未找到
500 服务器内部错误
-------使用responseText 获得返回的文本
---responseText 可以获得以文本形式返回的数据结果,也就是所请求网页的 html 代码;
-------使用responseText 获得返回的XML文档
---responseXML可以获得以XML形式返回的数据结果,其中,该XML文档已经解析完毕
----使用该方法须确定服务器端返回的是XML格式文档
其他XMLHttpRequest对象属性和方法
---Xmlhttp.abort() 立即中止请求的发送
----responseBody 返回未解码的二进制数据
----statusText
购物车实例
posted on 2009-04-28 20:54
玄风 阅读(111)
评论(0) 编辑 收藏