var xhr=new XMLHttpRequest()//声明一个XMLHttpRequest对象
xhr.onreadystatechange=function(){//请求/响应过程的当前活动阶段
if(xhr.readyState==4){//数据接收完
if(xhr.status>=200&&xhr.status<=300||xhr.status==304){//响应数据自动填充xhr对象属性(status,statusText,responseText,responseXML)
console.log(xhr.responseText)
console.log(xhr.responseXML)
}else{
console.log("unsuccessful"+xhr.status)
}
}
}
xhr.open("post","url",true)//开始请求open(请求类型,url,是否异步请求)
xhr.setRequestHeader("Origin","url")//发起XHR请求时默认发送HTTP头部(Accept等),这里自定义要添加的HTTP头部信息
xhr.send({params:{}})//发送的参数,如果没有参数xhr.send(null),比如某些get请求
onreadystatechange事件:必须定义在open()之前
检测XHR的readyState属性,每次变化触发onreadystatechange事件
readyState值:
0:未初始化,open未调用
1:启动,open已调用,未调用send
2:发送,send已调用,未响应
3:接收,接受部分数据
4:完成,接受全部数据(主要使用)
数据响应后,将属性自动填充到xhr对象:
status:http状态码
statusText:http状态码描述
responseText:响应主体
responseXML:响应类型如果是text/xml或application/xml
status状态码:200成功,如果是304表示没有修改,可以直接使用浏览器缓存版本
open(请求类型,url,是否异步请求)
send({params})发送的参数,如果没有参数xhr.send(null),比如某些get请求
发起XHR请求时默认发送HTTP头部:因此可以自定义头部
默认头部:
Accept:浏览器能够处理的内容类型
Accept-Charset:浏览器能够显示的字符集
Accept-Encoding:浏览器能够处理的压缩编码
Accept-Language:浏览器当前设置的语言
Connection:浏览器与服务器之间的连接(keep-alive长连接)
Host:发出请求所在域
Referer:发出请求页面的URI
User-Agent:浏览器用户代理字段
setRequestHeader(name,value):自定义头部,放在open之前,send之后