XMLHttpRequest对象的五步使用

什么是XMLHttpRequest对象

XMLHttpRequest对象用于后台与服务器的数交换数据。

为什么使用XMLHttpRequest对象?

在不重新加载页面的情况下更新网页

在页面已经加载后从服务器请求数据

在页面已经加载后从服务器接受数据

在后台想服务器发送数据

XMLHttpRequest对象的五步使用:

1.建立XMLHttpRequest对象

2.注册回调函数

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

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

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

1.建立XMLHttpRequest对象:

<span style="font-size:18px;"> var xmlhttp;
        function submit(){
           if(window.XMLHttpRequest){
               //IE7,IE8,fireFox,Mozillar,Sarari,Opera
               //alert("IE7,Opera");
               //1.创建XMLHttpRequest对象
                xmlhttp=new XMLHttpRequest();
               if(xmlhttp.overrideMimeType){
                   xmlhttp.overrideMimeType("text/xml");
                   
               }else if(window.ActiveXObject){
                   //IE6,IE5.5,IE5
                   //alert("IE6,IE5");
                   var activexName=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Miscrosoft.XMLHTTP"];
                   for(var i=0;i<activexName.length;i++){
                       try {
                           xmlhttp=new ActiveXObject(activexName[i]);
                           break;
                       } catch (e) {
    
                        }

                       
                   }
                   
               }
               if(xmlhttp===undefined||xmlhttp===null){
                   alert("当前浏览器不支持创建XMLHttpRequest对象");
               }
               //alert(xmlhttp);
              </span>

2.注册回调函数:

<span style="font-size:18px;"> //2.注册回调方法
               xmlhttp.onreadystatechange=callback;
               
               //记忆一个固定的用法,获取文本框中用户输入的内容
               var userName=document.getElementById("UserName").value;
               userName=encodeURI(encodeURI(userName));
               //get 方式 :
               //url="http://192.168.24.103:8080/WebApplication1/AJAX?name="+userName;
               //
               //
               //Post 方式
               url="http://192.168.24.103:8080/WebApplication1/AJAX";
               if(url.indexOf("http://")===0){
                   
                   url=url.replace("?","&");
                   //一个里面不能有两个?要把?换成&符号                   
                   url="Proxy?url="+url;
               }</span>
3.使用open方法设置和服务器端交互的基本信息:

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

<span style="font-size:18px;">  //* GET方式交互
               //3.设置和服务器交互的相应的参数
               xmlhttp.open("GET",url,true);
               
               //4.设置和服务器交互的数据,启动和服务器端的交互
               xmlhttp.send(null);
               */
              
  //POST 方式交互
               //3.设置和服务器交互的相应的参数    
               //POST 方式 
               xmlhttp.open("POST",true);
               //POST方式交互所需要增加的代码
               xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
               
               //4.设置和服务器交互的数据,启动和服务器端的交互
               xmlhttp.send("name="+userName);
               </span>
5.在回调函数中判断交互是否结束,响应是否正确,并根据需要获取服务器返回的数据,更新页面内容:
<span style="font-size:18px;"> function callback(){
            //5.判断和服务器端的交互是否完成,还要判断服务器端是否争取返回了数据
            if(xmlhttp.readyState===4){
                //表示和服务器端的交互已经完成
                if(xmlhttp.status===200){
                    //表示服务器的响应代码是200,正确的返回来数据
                   //纯文本数据的接受方法
                    var message=xmlhttp.responseText;
                    //XML数据对应的DOM对象接受方法
                    //使用的前提是,服务器端需要设置content-type为text/xml
                    //var domXml=xmlhttp.responseXML;
                    
                    //记忆向div标签中填充文本内容的方法
                    var div=document.getElementById("message");
                    div.innerHTML=message;
                    
                }
            }</span>
XMLHttpRequest对象使用的注意事项:
1.不同浏览器中XMLHttpRequest对象建立的方式不同
2.设置回调函数时,不要在函数名后面添加括号。加括号表示将回调函数的返回值注册给onreadystatechange属性。
3.open方法最多可以有五个参数,其中头三个参数时必须的。使用GET方式时,请求数据位于URL连接中,后面的send方法的参数直接写null就可以。使用POST方式时,open方法后面需要先调用setRequestHeader方法,来设置ContentType的值,然后调用send方法,send的参数就是请求的数据。

4.回调函数中,最好将readyState和status的两个if条件分开来写,readyState的判断条件位于外层,status的位于内层。假如他们被放到了同一个if条件中,判断数据正常返回也是没有问题的,但是不便于分别处理辅乳期不是200响应的情况和readyState不是4的情况。

相关文章

$.AJAX()方法中的PROCESSDATA参数 在使用jQuery的$.ajax()方...
form表单提交的几种方式 表单提交方式一:直接利用form表单提...
文章浏览阅读1.3k次。AJAX的无刷新机制使得在注册系统中对于...
文章浏览阅读1.2k次。 本文将解释如何使用AJAX和JSON分析器在...
文章浏览阅读2.2k次。/************************** 创建XML...
文章浏览阅读3.7k次。在ajax应用中,通常一个页面要同时发送...