ajax 兼容问题、send的位置、Status Code状态码

XMLHttpRequest在低版本IE下(除IE6),里面的事件和属性都有不同。比如 xhr.onload = function( ){ } 事件只有高版本才能使用。

但是所有版本都支持:xhr.onreadystatechange = function( ){ } :能够监听到请求的步骤。

onreadystatechange 能够监听到五步,每步都有对应的数字0-4,但是第0步监听不到,最多只能监听1-4,通过xhr.readyState拿到这些数字:

  0:请求未初始化

  1:服务器连接已建立

  2:请求已接收

  3:请求处理中

  4:请求已完成,且响应已就绪(虽然 readyState已经为4,但是接受的信息,不一定是成功的。看 Status Code 状态码)

  如果在同步(false)的情况下,低版本 IE 是按照正常的同步编程顺序解析 1-4 。 在高版本下,看不到1-3的过程,直接走4 。

在执行1-4步的时候,每完成一次都会调用onreadystatechange,直到最后一步为4的时候,说明服务器已经有回应了。


扫描二维码关注公众号,回复: 4411370 查看本文章

xhr.send( ) 到底放在哪里合适?

  如果是 onload ,放在 onload 的上面也行,下面也行。

  如果是 onreadystatechange ,那么 send 放在事件的下面。

    原因:1.能够多监听一步

        2.低版本 IE 下如果把 send 放在事件的上面,并且在同步的时候,第4步监听不到。

总结:(同步的时候 send 放在事件的下面,异步的时候 send 放哪里都可以)

   如果 IE 低版本:

     1.创建ajax对象

     2.填写地址

     3.等待 (onreadystatechange)

     4.发送 (send)

   高版本:

     1.创建ajax对象 (var xhr = new XMLHttpRequest)

     2.填写地址 (xhr.open(‘get/post’,‘/ XXXX?xxx=’ + xxxx,默认:true / false))

     3.发送 (send)

     4.等待 (onload)

     5.拿到返回信息


Status Code 状态码 (在 Network 中找 / xhr.status)

  xhr.status => http 状态码

    200:客户端成功接收到服务端的返回数据

    301:永久重定向,当前域名地址已经永久跳转到另一个域名地址

    302:临时重定向,。。。。。。

    304:加载缓存,

    307:临时重定向,针对的是http传输协议,一开始http => https

    400:访问参数错误

    401:没有访问权限

    404:请求地址【资源】不存在

    413:客户端请求的文件超过服务端的最大承载的容量

    500:未知的服务端错误

    503:服务器超过最大的负荷

  注意:只要是5xx 都是服务端的问题。只要页面的4xx 都是前端的问题。2xx、3xx说明请求成功的意思。

  

2018-12-07

猜你喜欢

转载自www.cnblogs.com/MrZhujl/p/10084419.html