- XMLHttpRequest对象 | ActiveX对象
- Js引擎内置的构造函数
- var xhr = new XMLHttpRuquest()
- 兼容性:IE5/IE6试用ActiveX对象
- var xhr = new ActiveXObject(‘Microsoft.XMLHTTP’)
- onreadystatechange事件:挂载到XMLHttpRequest对象上的事件
- readyState状态:通过XMLHttpRequest对象发送HTTP请求的各阶段状态码
- status:服务器响应的状态码
- 当readyState变化时,将触发onreadystatechange事件执行其回调函数
- 0:请求未初始化
- 1:服务器建立已连接
- 2:请求已接收
- 3:请求处理中
- 4:请求已完成,且响应已就绪
- readyState仅仅是针对请求的状态码,获取资源是否成功取决于status的状态
- xhr.setRequestHeader(“Content-type”,"application/x-www-form-unlencoded’)
- POST请求方式必须设置这个请求头信息,目的是请求体中的数据转换位键值对
- 原生ajax封装
1 | var xhr = (function(){ |
- XMLHttpRequest标准又分为Level 1和Level 2
- Level1
- 无法发送跨域请求
- 无法发送非纯文本内容
- 无法获取传输进度
- Level2
- 可以发送跨域请求
- 支持获取二进制数据(非纯文本数据)
- 支持上传文件
- formData对象
- 可以获取传输进度
- 可以设置超时时间
- 但存在兼容性问题
- IE8/9/Opara Mini不支持xhr对象
- IE10/11不支持响应类型为JSON
- 部分浏览器不支持超时设置
- 部分浏览器不持支blob(文件对象的二进制数据)
- Level1
- xhr.status/xhr.statusText:服务器回应的HTTP状态码/服务器发送的状态提示
- 200,OK,访问正常
- 301,Moved Permanently,永久移动
- 302,Move temporarily,暂时移动
- 304,Not Modified,未修改
- 307,Temporary Redirect,暂时重定向
- 401,Unauthorized,未授权
- 403,Forbidden,禁止访问
- 404,Not Found,未发现指定网址
- 500,Internal Server Error,服务器发生错误
- xhr.onloadstart:绑定HTTP请求发出的监听函数
- xhr.onerror:绑定请求失败的监听函数(修改封装的AJAX)
- xhr.onload:绑定请求成功完成的监听函数
- xhr.onabort:绑定请求中止(调用了abort()方法)的监听函数
- xhr.onloadend:绑定请求完成(不管成功与失败)的监听函数
防抖:n秒内触发一个事件,以最后一次触发为准
节流:n秒内只触发一次事件