XMLHttpRequest进行Ajax异步请求过程

作者:Kinglong    发表时间:2023-07-16 06:47   

关键词:  

1.get请求

创建XMLHTTPRequest对象的封装

    function createXHR(){

        var xhr;

        if(window.XMLHttpRequest){

            xhr = new XMLHttpRequest();       

        }

        else

        {

            xhr = new ActiveXObject("Microsoft.XMLHTTP");

        }

        return xhr;

    }

    

通过url发送数据,中文的要进行url编码处理

    function send(){

//1 new (创建对象)

      var request = createXHR();

     //2 open(没有发送)

        //设置div初始值

        var div = document.getElementById("msg");

        div.innerHTML ="正在加载...";

        //当get时处理中文的编码

        var name = encodeURIComponent("张三");

        //open

        request.open("get","01-get.ashx?name="+name,true); //true 表示是异步请求

        request.setRequestHeader("If-Modified-Since","0");

        

        //3 register(注册事件)

        request.onreadystatechange=function(){

            if(request.readyState==4){

                //条件readyState==4 与else服务器错误并列

                if(request.status==200){

                    div.innerHTML =request.responseText;

                }

                 else{

                    div.innerHTML ="服务器错误";

                }    

            }

        }

      //4 send(发送请求)

        request.send();  

    }

 

2.post请求

加粗部分是与get请求不同的部分。

function login(){

     //1 new-创建对象

    var request = createXHR();

        var msgSpan = document.getElementById("msg");

        msgSpan.innerHTML="正在登陆...";

        //获取表单元素的”值“,准备要提交的数据

        var name =document.getElementById("txtName").value;

        var pwd =document.getElementById("txtPwd").value;  

        var data = "name="+name+"&pwd="+pwd;

           

        //2 open-初始化请求

        request.open("post","02-post.ashx",true);

        //与get不一样的地方 设置请求报文头的"Context-Type":

        request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

        //3 register-注册状态改变事件

        request.onreadystatechange =function(){

            if(request.readyState==4 && request.status==200){

                var msg = request.responseText;

                if(msg==1){

                   msgSpan.innerHTML="登陆成功";

                }

                else{

                    msgSpan.innerHTML="登陆失败";

                }

            }

        }

        //4 send  注意send()的参数:要post的数据

        request.send(data);

   }