Ajax原生实现

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之后

你可能感兴趣的:(Ajax原生实现)