序
页面的局部刷新技术
Ajax
允许浏览器和服务器通信而无须刷新整个页面的技术
XMLHttpRequest:该对象是对JS的一个拓展,可使网页与服务器进行通信,是创建Ajax应用的最佳选择
Ajax实际上是几种技术以一种全新的方式聚合在一起:
- 服务器端语言:服务器需要具备向浏览器发送特定信息的能力,Ajax与服务器端语言无关
- XMl是一种描述数据的格式,Ajax需要某种格式化的格式来在服务器和客户端之间传递信息,XML就是其中的一种选择
- XHTML使用扩展超媒体标记语言和CSS标准化呈现
- DOM实现动态显示和交互
- 使用XMLHTTP组件XMLHttpRequest对象进行异步读取
- 使用JS进行绑定和处理数据
发送请求
- 利用XMLHttpRequest实例与服务器进行通信包含三个关键的部分
onreadystatechang事件处理函数
- 该函数由服务器触发,而不是用户
- 在Ajax执行过程中,服务器会通知客户端当前的通信状态,这依靠更新XMLHttpRequest对象的readyState来实现,改变readyState属性是服务器对客户端连接操作的一种方式,每次readyState属性的改变都会触发readystatechang事件
open(method,url,asynch)方法
- open运行用一个Ajax调用向服务器发送请求
- method:请求的类型
- GET从服务器检索一个文件,不需要发送任何数据
- POST向服务器发送数据
- url:路径,指向你所请求的服务器上的那个文件,通常会在url后附一个时间戳来清除浏览器缓存,不清除的话下次访问的页面还是上次请求的页面不会改变
- asynch:表示请求是否异步传输,默认值是true,在读取后面的脚本之前不需要等待服务器响应,指定false,当脚本处理过程经过这点时,会停下来等到Ajax请求完毕在继续执行
send方法
- open方法定义了Ajax请求的一些细节,send方法可为已经待命的请求发送指令
- 如果用的是GET请求,不会发送任何数据,给send方法传递null即可
- 如果是POST请求,则要为send方法提供参数,如果没用参数用null代替
sendRequestHeader(header,value)
- 首部信息用来声明一个请求时GET还是POST
- header首部的名字,value首部的值
接收响应
readyState
- 表示Ajax请求的当前状态
- 0表示初始化,还没有调用open方法
- 1表示正在加载,open方法已调用,send方法还没调用
- 2表示已加载完毕,send方法已调用,请求开始了
- 3表示交互中,服务器正在发送响应
- 4表示完成,响应发送完毕
- 每次readyState的值发生改变时,都会触发readystatechang事件
- readystate值的变化会因浏览器的不同而有所差异,但是,当请求结束的时候,每个浏览器都会把readyState的值统一设置为4
- 表示Ajax请求的当前状态
status
- 服务器发送的每一个响应都带有首部信息,三位数的状态码是最重要的首部信息
- 常用状态码及其含义:
- 404没找到页面
- 403禁止访问
- 500内部服务器错误
- 200一切正常
- 304没有被修改
- 在XMLHttpRequest对象中,服务器发送的状态码都保存在status属性里,通过把这个值和200或304比较,可以确保服务器是否已发送了一个成功的响应
responseText
- 该属性包含了从服务器发送的数据,他可以是一个html,json或普通文本,这取决于服务器发送的内容
- 当readyState属性变成4时,responseText属性才可用,表示Ajax请求已经结束
responseXML
- 如果服务器返回的是xml,那么数据存储在该属性中
- 若应用程序不需要与其他应用程序共享数据时,使用HTML来返回数据是最简单的
- 如果数据要重用,JSON文件在性能和文件大小上都有优势
- 如果远程应用程序未知时,XML文档是首选,因为XML是web服务领域的世界语
Ajax传输数据的三种方式:
- XML:笨重,解析困难,但是XML是通用的数据交换形式
- HTML:不需要解析就可以直接放到文档中,若仅仅更新一部分区域,但传输的数据不是很方便,且HTML代码需要拼接完成
- JSON:小巧,有面向对象特征,且有json使用最广泛
1 | 使用ajax发送数据的五个步骤 |
jQuery实现Ajax
load(url, [data], [callback])
- 载入远程 HTML 文件代码并插入至 DOM 中
- 任何一个html节点都可以使用load方法加载ajax,结果直接插入HTML节点中
- url:待装入 HTML 网页网址。
- data:发送至服务器的 key/value 数据,没传数据默认get方法,否则为post
- callback:载入成功时回调函数。
1
2
3
4var $obj=...;
var url...;
var args={key:value};
$obj.load(url, args, [callback])
jQuery.get(url, [data], [callback], [type])
- 通过远程 HTTP GET 请求载入信息
- url:待载入页面的URL地址
- data:待发送 Key/value 参数
- callback:载入成功时回调函数
- type:返回内容格式,xml, html, script, json, text, _default
jQuery.post(url, [data], [callback], [type])
- 通过远程 HTTP POST 请求载入信息
- url:发送请求地址。
- data:待发送 Key/value 参数。
- callback:发送成功时回调函数。
- type:返回内容格式,xml, html, script, json, text, _default。
jQuery.getJSON(url, [data], [callback])
- 通过 HTTP GET 请求载入 JSON 数据
- url:发送请求地址。
- data:待发送 Key/value 参数。
- callback:载入成功时回调函数。