1、XMLHttpRequest对象的由来
XMLHttpRequest是一个浏览器脚本语言能够适应的浏览器接口,使得脚本能够发送http/https请求到服务器,并且能把服务器响应加载到脚本里.
所有浏览器都支持XMLHttpRequest.Ajax基于XMLHttpRequest实现的方法.
为了安全考虑,XMLHttpRequest遵循浏览器的同源策略.
浏览器内部对象,可以利用此内部对象使用javascript向服务器发送请求。
此对象暴露各种属性、方法和事件以便脚本处理和控制HTTP请求与响应。
2、XMLHttpRequest对象的属性
2.1、readyState
取值0~5:
0 : 描述一种”未初始化”状态;此时,已经创建一个XMLHttpRequest对象,但是还没有初始化。
1 : 描述一种”发送”状态;此时,代码已经调用了XMLHttpRequest open()方法并且XMLHttpRequest已经准备好把一个请求发送到服务器。
2 : 描述一种”发送”状态;此时,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应。
3 : 描述一种”正在接收”状态;此时,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收结束。
4 : 描述一种”已加载”状态;此时,响应已经被完全接收。
2.2、responseText
客户端接收到的HTTP响应的文本内容。
当readyState值为0、1或2时,responseText包含一个空字符串。当readyState值为3时,responseText包含客户端还未完成的响应信息。当readyState为4(已加载)时,该responseText包含完整的响应信息。
2.3、responseXML
对请求的响应,解析为XML并作为Document对象返回。
2.4、status
由服务器返回的 HTTP 状态代码
2.5、statusText
这个属性用名称而不是数字表示请求的 HTTP 的状态代码
3、XMLHttpRequest对象的事件
onreadystatechange
4、XMLHttpRequest对象的方法
abort\getAllResponseHeaders\getResponseHeader\open\send\setRequestHeader
5、新老版XMLHttpRequest对比
5.1、老版本
5.1.1、使用方法:
var xhr = new XMLHttpRequest();//创建一个XMLHttpRequest实例 xhr.open('GET', 'example.php');//向远程主机发出一个HTTP请求 xhr.send(); xhr.onreadystatechange = function(){ if ( xhr.readyState == 4 && xhr.status == 200 ) { //请求成功状态 } else { //其他请求状态 } };
5.1.2、老版本的缺点:
a)、只支持文本数据的传送,无法用来读取和上传二进制文件
b)、传送和接收数据时,没有进度信息,只能提示有没有完成
c)、受到同源策略限制,只能向同一域名的服务器请求数据
5.2、新版本
5.2.1、新增特性:
a)、可以设置HTTP请求的时限。
b)、可以使用FormData对象管理表单数据。
c)、可以上传文件。
d)可以请求不同域名下的数据(跨域请求)。
e)可以获取服务器端的二进制数据。
f)可以获得数据传输的进度信息。
5.2.2、新增特性的功能介绍
a)、可以设置HTTP请求的时限。
var xhr = new XMLHttpRequest();//创建一个XMLHttpRequest实例 xhr.timeout = 3000;//设置请求最长等待时间,超过此时间,就自动停止HTTP请求 xhr.ontimeout = function(){ //请求超时的回调处理 } xhr.open('GET', 'example.php');//向远程主机发出一个HTTP请求 xhr.send();
浏览器兼容性上有待提高
b)、可以使用FormData对象管理表单数据。
html4表单提交使用传统的