美文网首页
Ajax原生实现

Ajax原生实现

作者: EO_eaf6 | 来源:发表于2020-09-08 16:21 被阅读0次
    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原生实现

          本文链接:https://www.haomeiwen.com/subject/dcqjektx.html