1.第一件事就是实例化XMLHttpRequest: var request = new XMLHttpRequest();
2.下一步是调用XHR对象的–open()方法,open方法的两个必需部分(“GET/POST”,URL)
URL是请求的主题,是相对于文档的URL(如果是绝对路径,协议和主机和端口通常必须匹配文档对应的内容,否则跨域的请求通常会报错)
3.(若没有主体,就忽略这一步)使用XHR发起HTTP请求倒数第二步,是制定可选的请求主体。(POST请求通常拥有主体,同时它应该匹配使用setRequestHeader()制定的“Content-Type”头)
4.向服务器发送send()方法
request.send()参数可选。由于get请求绝对没有主体,所以应该传递null或省略这个参数。有主体的就传主体。
取得响应
一个完整的HTTP相应,由状态码,响应头集合,响应主体组成。
状态码:status和statusText属性,以数字和文本的形式返回HTTP状态码:
readyState的值
常量 值 含义
unsent 0 open()尚未调用
opened 1 open已调用
headers_received 2 接受到头部信息
loading 3 接收到响应主体
done 4 响应完成
理论上,每次readyState属性改变都会出发readystatechange时间,实际上,属性改为0或1时可能没有出发这个事件。
1,异步响应
由于本身性质,异步处理HTTP响应式最好的方式,然而XHR也支持同步响应。如果把false作为第三个参数传递给open(),那么send()方法将阻塞直到请求完成。
2.响应解码
编码请求主体
HTTP POST请求包括一个请求主体,它包含客户端传递给服务器的数据
1.表单编码的请求
表单数据编码格式有一个正式的MIME类型(POST提交这种顺序的表单数据时,必须设置“conten-type”请求头为下列值)
application/x-www-form-urlencoded
2.JSON编码的请求
JSON.stringify()
3.XML编码的请求(XML有时也用于数据传输的编码)
4.上传文件(通过表单上传)
5.multipart/form-data请求(当HTML表单同时包含文件上传元素和其他元素时,Content-Type应设置为“multipart/form-data”)
Http进度事件
XHR2这个新的事件模型中,XHR对象在请求的不同阶段触发不同类型的事件,所以不再需要检查readyState属性。
触发步骤:调用send()时,触发单个loadstart事件。
当事件完成,会触发load事件。
load事件程序检查status状态码来确定HTTP响应。
HTTP请求无法完成有这3种情况:
load(正常完成),abort(中止),timeout(超时),error(错误)
hide()和show()
同时修改多个样式属性(高度、宽度及透明度),这是非常基础的一对动画,常常联合起来一起使用,显示或隐藏一些元素,非常方便。
fadeIn()和fadeOut()
只改变透明度,fadeIn()实现的功能是在一段时间内增加元素的不透明度,fadeOut()则相反。
slideUp()和slideDown()
只改变元素的高度。slideUp()实现元素由下到上缩短显示,slideDown()实现元素由上到下延伸显示。
fadeTo()
只改变透明度。可以把元素的不透明度以渐进的方式改变到指定值。
toggle()
切换元素的可见状态。可以用于替代hide()和show()。
slideToggle()
通过高度的变化切换匹配元素的可见性。可以用于替代slideUp()和slideDown()。
fadeToggle()
通过不可见度的变化切换匹配元素的可见性。可以用于替代fadeIn()和fadeOut()。
万能动画
animate():自定义动画,可以实现任何动画,关键是其参数的设置。
一组元素上的动画效果
当一个animate()中使用多个属性时,动画是同时的。
采用链式法来写则是顺序动画。
多组元素上的动画效果
默认动画是同时发生的。
采用回调形式应用动画时则是按照回调顺序发生的。