AJAX异步请求(XMLHttpRequest对象)的原理和过程

2022-07-0208:06:20WEB前端开发Comments1,668 views字数 1503阅读模式

Ajax的原理

AJAX指的是异步的JavaScript及XML(Asynchronous JavaScript  And XML),是一种创建快速动态的技术,通过在后台与服务器进行少量的数据交互,实现页面的异步更新,在不重新加载整个页面的情况下做到页面的部分刷新。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

Ajax异步请求的过程

Ajax创建异步的XMLHttpRequest对象

Ajax的要点是XMLHttpRequest对象,不同的浏览器创建XMLHttpRequest对象的方法是有差异的,代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

//创建全平台兼容的xhr对象
function getXHR(){
    var xhr = null;
       if( window.XMLHttpRequest ){
          //兼容IE7+ FireFox Chrome  Opera Safari
           xhr = new XMLHttpRequest();
           }else if( window.ActiveXObject ){
            try{xhr = new ActiveXObject( "MSxml2.XMLHTTP" );//即MSXML3
                }catch(e){
                   try{ xhr = new ActiveXObject( "Micsoft.XMLHTTP" )
            //兼容IE6 IE5 很老的API,虽然浏览器支持,功能可能不完善,故不建议使用                         
                    }catch(e){
                          alert( "您的浏览器不支持Ajax!" )
                      }
              }
        }
        return xhr;
  }

IE浏览器使用ActiveXObject,而其他浏览器使用XMLHttpRequest的JavaScript内建对象,所以针对不同浏览器创建此对象,需要使用一条 "try and catch" 语句。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

首先声明一个保存XMLHttpRequest的xmlHTTP变量,然后使用XMLHttp = new XMLHttpRequest 来创建此对象,这条语句针对FireFox 、Opera 、Safari浏览器,假如失败则尝试针对 Internet Explorer 6.0+ 的 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"),假如也不成功,则尝试针对 Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")。假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持 AJAX 的提示。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

ajax异步请求数据的过程AJAX异步请求(XMLHttpRequest对象)的原理和过程

(1)设置请求参数(请求方式,请求页面的相对路径,是否异步)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

(2)设置一个处理服务器下响应的函数onreadystatechange文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

(3)获得异步对象readyState属性,该属性存有服务器相应的信息:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

readyState属性可能的值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

·0 请求未初始化(在调用open之前)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

1 请求已提出(在调用send之前)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

2 请求已发送()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

3 请求处理中(部分数据可用,但服务器还没有完全响应)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

4 请求已完成(可以访问服务器响应)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

(4)判断响应报文的状态,若为200则说明服务器正常运行并返回响应数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

(5)读取响应数据,可以通过responeseText来取回服务器返回的数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/24701.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/24701.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定