21.1 XMLHttpRequest 对象
Ajax技术的核心是 XMLHttpRequest 对象(检测 XHR),这是由微软首先引进的一个特性,其它浏览器提供商后来都提供了相同的实现。
请求得到的响应数据会自动填充到XHR对象的属性上,主要有下面4个属性:
responseText: 响应主体文本
responseXML: 如果响应内容类型是"text/xml"或"application/xml", 这个属性中将包含响应数据的XML DOM文档
status: 响应的HTTP状态码,一般可以将HTTP状态吗200视为成功的标识
statusText: HTTP状态的说明
XHR对象有1个readyState属性记录了该对象从创建到收到响应数据可能会经历的5种状态,readyState的可能取值如下:
0: 还没有调用open()方法初始化请求
1: 已经调用open()方法但是还没有调用send()方法
2: 已经调用send()方法但是还没有收到响应
3: 收到部分响应数据,还有部分数据没收到
4: 收到全部响应数据,即响应结束,数据完备
get请求
get是最常见的请求类型。使用get请求经常发生的一个错误是查询字符串格式有问题。查询字符串中每个参数的名称与参数都必须使用encodeURIComponent()进行编码。而且所有名-值对儿都必须以【&】分割。这是可以使用addURLParam()函数,该函数接受三个值,url、参数名称、参数值。当url中包含【?】时接【&】没有问好时使用【&】符号。
post请求
post请求频率仅次于get请求。post应该把数据作为请求的主体提交。post的主体可以包含非常多的数据并且格式不限。
进度事件
ProgressEvents 规范是w3c的一个工作草案。定义了与客户端服务器通信有关的事件。
lloadstart: 接受到响应数据的第一个字节时触发;
lprogress:在接受响应期间持续不断地触发;
lerror:请求发送错误时触发;
labort: 调用abort()方法而终止链接时触发;
lload: 在接收到完整的响应数据时触发;
lloadend: 在通信完成或者触发error、abort、load事件后触发;
每个请求从触发loadstart事件开始接下来一个或多个progress事件然后触发error或abort或load事件之一最后触发loadend事件(目前还没有浏览器支持loadend事件)。