【AJAX】XMLHttpRequest对象的使用

       通过XMLHttpRequest对象,AJAX可以只同服务器进行数据层面的交换,而不用每次都刷新页面。下面就简单介绍一下XMLHttpRequest对象的使用。

一、XMLHttpRequest对象的五步使用法

1、建立XMLHttpRequest对象

2、注册回调函数

3、使用open方法设置和服务器端交互的基本信息

4、设置发送的数据,开始和服务器端交互

5、在回调函数中判断交互是否结束,响应是否正确,并根据需要获取服务器端返回的数据,更新页面内容。

二、知识详解

1、在使用XMLHttpRequest对象发送请求和处理响应之前,首先需要初始化该对象,由于XMLHttpRequest不是一个W3C标准,所以对于不同的浏览器,初始化方法也不同。如此所示。

            function submit(){
                //alert("test");
                //1、创建XMLHttpRequest对象
                if (window.XMLHttpRequest) {
                    //用于IE7,IE8,FireFox,Mozilla,Safari,Opera浏览器
                    alert("IE7,IE8,FireFox,Mozilla,Safari,Opera");
                    var xmlhttp=new XMLHttpRequest();
                    if (xmlhttp.overrideMimeType) {
                        xmlhttp.overrideMimeType("text/xml");
                    }
                }else if (window.ActiveXObject) {
                    //用于IE6,IE5,IE5.5浏览器
                    alert("IE6,IE5,IE5.5");
                    //定义一个包含所有可以用于创建XMLHttpRequest对象的ActiveX控件的名称的数组
                             var activexName=["MSXML2.CMLHTTP.6.0","MSXML2.CMLHTTP.5.0",
                             "MSXML2.CMLHTTP.4.0","MSXML2.CMLHTTP.3.0",
                             "MSXML2.XMLHTTP","Misorosoft.XMLHTTP"];
                         
                         for (var i = 0; i < activexName.length; i++) {
                             try{
                                     var xmlhttp=new ActiveXObject(activexName[i]);
                                     break;
                                 }  catch(e){
                                     
                                 }
                         }
                    }
                    if (xmlhttp==undefind || xmlhttp==null) {
                        alert("当前浏览器不支持创建XMLHttpRequest对象,请更换浏览器");
                        return;
                   }
                   //alert(xmlhttp);
执行效果如下:


2、XMLHttpRequest对象的常用方法



3、XMLHttpRequest对象的常用属性


三、代码实现

        <script type="text/javascript">
            function submit(){
                //alert("test");
                //1、创建XMLHttpRequest对象
                if (window.XMLHttpRequest) {
                    //用于IE7,IE8,FireFox,Mozilla,Safari,Opera浏览器
                    //alert("IE7,IE8,FireFox,Mozilla,Safari,Opera");
                    var xmlhttp=new XMLHttpRequest();
                    if (xmlhttp.overrideMimeType) {
                        xmlhttp.overrideMimeType("text/xml");
                    }
                }else if (window.ActiveXObject) {
                    //用于IE6,IE5,IE5.5浏览器
                   // alert("IE6,IE5,IE5.5");
                    //定义一个包含所有可以用于创建XMLHttpRequest对象的ActiveX控件的名称的数组
                             var activexName=["MSXML2.CMLHTTP.6.0","MSXML2.CMLHTTP.5.0",
                             "MSXML2.CMLHTTP.4.0","MSXML2.CMLHTTP.3.0",
                             "MSXML2.XMLHTTP","Misorosoft.XMLHTTP"];
                         
                         for (var i = 0; i < activexName.length; i++) {
                             try{
                                     var xmlhttp=new ActiveXObject(activexName[i]);
                                     break;
                                 }  catch(e){
                                     
                                 }
                         }
                    }
                    if (xmlhttp==undefind || xmlhttp==null) {
                        alert("当前浏览器不支持创建XMLHttpRequest对象,请更换浏览器");
                        return;
                   }
                   //alert(xmlhttp);
                   
                   //2、注册回调方法:
                   //目的:服务器端的数据返回给XMLHttpRequest对象,可以执行回调方法,并取到相应数据,并更新页面
                   xmlhttp.onreadystatechange=callback;//调用callback方法
                   //错误的写法:
                   //xmlhttp.onreadystatechange=callback();//调用callback方法将最后的结果返回值赋值给onreadystatechange
                   
                   //获取文本框中用户输入的内容
                   var userName=document.getElementById("UserName").value;
                   //用GET方式
                   //3、设置和服务器端交互的相应参数
                   //open的参数介绍①第一个参数:与服务器交互的方式
                   //②所请求的服务器的地址③表示XMLHttpRequest对象是采用异步交互还是同步交互
                    xmlhttp.open("GET","AJAX?name="+userName,true);
                   //4、设置向服务器端发送的数据,启动和服务器端的交互
                   xmlhttp.send(null);
                   //以上为用GET方式交互
                   
                   
                   //用POST方式
                   //3、设置和服务器端交互的相应参数
                   //open的参数介绍①第一个参数:与服务器交互的方式
                   //②所请求的服务器的地址③表示XMLHttpRequest对象是采用异步交互还是同步交互
                    xmlhttp.open("POST","AJAX",true);
                    //POST方式交互所需要增加的代码
                    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
                   //4、设置向服务器端发送的数据,启动和服务器端的交互
                   xmlhttp.send("name="+ userName);
                   //以上为用POST方式交互
          }
          
          function callback(){
              //5、判断和服务器端的交互是否完成,还要 判断服务器端是否正确返回了数据
              if (xmlhttp.readyState==4) {
                  //表示和服务器端的交互已经完成
                  if (xmlhttp.status==200) { 
                      //表示服务器的响应代码是200,正确返回了数据
                      //纯文本数据的接收方法
                      var message=xmlhttp.responseText;
                      //XML数据对应的DOM对象的接受方法
                      //使用的前提是,服务器端需要设置xontenttype为text/xml
                      //var domXml=xmlhttp.responseXML;
                      
                      //向div标签中填充文本内容的方法
                      var div=document.getElementById("message");
                      div.innerHTML=message;
}
              }
          }
          
        </script>


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值