一、定义
1、JavaScript对象,主流浏览器都在支持(ie11以上)
2、JavaScript脚本与服务器端交互数据的API接口
二、属性
1、readyState
XMLHttpRequest对象的处理状态,状态值从0到4 五个状态
0:表示XMLHttpRequest已经初始化
var xhr = new XMLHttpRequest()
1:表示open()方法已经调用
xhr.open(
'MethodName(string/必须)', // 请求HTTP的方法名(GET/POST/HEAD/DELETE/OPTION)
'URL(string/必须)', // 请求主题 请求资源的标识符
'async(boolean/非必须)' // 请求是否是异步(默认是true)
'name(string/非必须)', // 用户名(用于服务器端验证)
'password(string/非必须)') //密码(用于服务器端验证)
2:表示 send()方法已经调用
xhr.send(Data) // 要发送的数据
3:表示XMLHttpRequest对象开始读取服务器的响应
4:表示XMLHttpRequest对象读取服务器响应结束
2、status
响应状态码(服务器端的状态返回)
0: 在http返回前关闭/取消,或者防火墙等原因,会造成http请求没有status信息
1xx:信息响应类,表示接收到请求并且继续处理。
2xx:处理成功响应类,表示动作被成功接收、理解和接受。
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理 。
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行 。
5xx:服务端错误,服务器不能正确执行一个正确的请求。
readyState属于XMLHttpRequest大的状态分类,
status属于服务器端的响应状态码,描述问题更加详细。
3、statusText
响应状态码 后面的文本信息
如 OK
4、timeout
超时时间(表示一个请求在被自动终止前所消耗的毫秒数)
默认为0 表示没有超时时间
5、upload
html5的新增的接口,用于文件上传(后文会有介绍)
6、withCredentials
boolean值,表示在进行跨站的访问控制请求时,是否使用认证信息。默认为false。注意:这不会影响同站same-site请求。
7、response
XMLHttpRequest接收到的响应体,如果没有接收到数据,就是空字符串。
8、responseText
XMLHttpRequest接收到的响应体,如果没有接收到数据,就是空字符串。
9、responseXML
XMLHttpRequest接收到的响应体,解析为XML,并作为Document对象返回。
10、 responseURL
响应体的URL
11、responseType
响应体类型
二、方法
1、初始化对象
var xhr=new XMLHttpRequest()
2、xhr.open() 用于验证请求的方法
请看上面readyState里的详解
3、setRequestHeader(key,value)
open()方法之后就可以设置请求头
4、send(data) 方法请求
1)data:想要发送的数据(没有需要传递的数据时,传 null表示空)
2)传递的参数类型都是字符串,否则服务器端接收不到
3)通过设置请求头Content-Type的类型可以告知服务器端是何种类型的文件
5、abort()
终止XMLHttpd对象对HTTP的请求,把XMLHttpRequest对象恢复到初始状态
如果readyState的值是4的话,这个方法就没用了(4表示XMLHttpRequest读取服务器端响应已经结束)
6、getResponseHeader()
HEAD请求忽略内容,所以其响应比对GET或POST响应小
7、getAllResponseHeaders()
获取所有请求头信息(处于安全考虑,有些头信息获取不到,可通过服务器端设置)
三、事件
1、onreadystatechange
设置或取回该异步请求的句柄(异步,不可撤销)
2、ontimeout
当存在一个阻止这个请求的错误时,该事件被唤醒(异步,不可撤销)
四、难点讲解
1、send(data)中的data
1) 设置requestHeader中Content-Type键值 设置请求data的数据类型
<1>参数键值对化 (键值对化,原生表单控件的基本参数类型)
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8');
<2>json (json字符串 )
注意一点 标准的json字符串格式
var jsonString="{'name':'xxx'}"
var jsonString=JSON.stringify({name:'xxx'});
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
<3>form-data 一般用于数据上传
xhr.setRequestHeader('Content-Type','multipart/form-data;charset=utf-8');
<4> 字符串
xhr.setRequestHeader('Content-Type','text/plain;charset=UTF-8');
2)Formdata (定义表单数据,下文有介绍)
var formData = new FormData()
formData.append('name','test')
formData.append('filename','fileInput')
xhr.send(formData)
以上就是XMLHttpRequest对象的基础知识,下篇博文将系统的介绍XMLHttpRequest上传与下载的相关知识。博文连接:XMLHttpRequest文件上传