AJAX编程
AJAX
一种无需重新加载整个网页的情况之下能够更新部分网页的技术。
使用AJAX的网页通过在后台跟服务器进行少量的数据交换,网页就可以实现异步局部更新。
同步
异步
XMLHttpRequest对象
var xhr = new XMLHttpRequest()
HTTP
通信协议,无状态协议。
HTTP请求过程,7步骤
- 建立TCP连接
- web浏览器向Web服务器发送请求命令。
- web浏览器发送请求头信息
- WEB服务器应答
- web服务器发送头信息
- web服务器向浏览器发送数据
- web服务器关闭TCP连接
HTTP请求四个部分:
- http请求的方法或动作,比如是GET还是POST.
- 正在请求的URL
- 请求头,客户端信息,验证信息
- 请求体,客户端的查询字符串,表单信息
GET: 【幂等:查询多少次都是一样的】
一般用于信息获取
使用URL传递参数
对所发送信息的数量也有限制,一般在2000个字符
POST:数据在请求体中
一般用于修改服务器上的资源
对所发送信息的数量是没有限制的
HTTP响应
- 数字和文字组成的状态码
- 响应头,对应于请求头,有服务器类型,日期时间。
- 响应体,响应正文,HTML代码,字符串等
HTTP状态码:【首位数组定义了状态的类型】
1xx:信息类,收到web浏览器请求,正在处理中。
2xx:成功,服务器成功处理请求
3xx:重定向,请求没成功,客户端采取进一步动作。
4xx:客户端错误,客户端提交的请求有错误
5xx:服务器错误,服务器不能处理请求
XHR发送请求
- open(method,url,async=true)
- send(string),GET为null,POST需要数据
- setRequestHeader(“key”,”value”) 【表单enctype有三种:application/x-www-form-urlencoded默认,multipart/form-data,text/plain】,必须写在send之前,open之后
- request.onreadystatechange事件
XHR取得响应
- responseText: 获得字符串形式的响应数据
- responseXML:获得XML形式的响应数据
- status和statusText:以数字和文本形式返回HTTP状态码
- getAllResponseHeader():获取所有的响应报头
- getResponseHeader(key):查询响应中的某个字段的值
readyState属性:这个属性的变化代表服务器响应的变化
- 0:请求未初始化,open还没有调用
- 1:服务器连接已建立,open已经调用
- 2:请求已经接收,接收到请求头信息了
- 3:请求处理中,接收到了响应主体了
- 4:请求完成,响应已就绪,响应完成了
使用onreadystatechange
进行监听readystate属性的变化,当readystate变化就会触发这个事件。(部分浏览器的readystate属性变化触发不到),我们只需要当readystate=4以及status=200就可以判断是响应成功了。