ajax封装函数

183 阅读1分钟

 //封装ajax
        function ajax(type,url,data,fn){
            /*
            参数一:type请求类型
            参数二:URL接口路径
            参数三:可选 传输的数据
            参数四:成功的回调
            */

            let xhr=new XMLHttpRequest();//创建对象
            //告诉ajax你要什么
            if(type.toLowerCase()=='get'){
                //get请求
                if(data){
                    url+='?'+data;//url?data
                }
                xhr.open(type,url,true);
                xhr.send(null);
            } else{
                //post请求
                xhr.open(type,url,true);
                xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
                xhr.send(data);
            }

            //接收数据
            xhr.onreadystatechange=()=>{
                if(xhr.readyState==4){
                    if(xhr.status==200){
                        //成功接收是数据
                        if(fn){
                            fn(xhr.responseText);//是实参
                        }
                    }else{
                        alert('错误http状态码是:'+xhr.status)
                    }
                }
            }
        }

         //调用
        (function (){
            let name =document.getElementById('name');
            let inf=document.getElementById('inf');
            
            name.onblur=()=>{
                let username=name.value.trim();
                if(username){
                    //非空 发送ajax请求
                    let url='api/02checkname.php';
                    let data='name='+username+'&time='+new Date();
                    ajax('get',url,data,str=>{ //调用
                        // console.log(str);
                        //在回调函数里面写DOM操作
                        if(str=='yes'){
                            inf.innerHTML='该用户名可以注册,请继续填写哦';
                            inf.style.color='green';
                        }else{
                            inf.innerHTML='该用户名太受欢迎,请换一个哦';
                            inf.style.color='red';
                        }
                        console.log(str);
                        
                    });
                }else{
                    inf.innerHTML='请输入用户名';
                    inf.style.color='red';
                }
            }
        })()

 

   //封装ajax
        /*
        jq:ajax
        $.ajax({
            type:'get',
            url:xxx,
            data:'',
            async:true,
            success:function(str){
                
            }
        })
    */
    function ajax(opt){
        function extend(obj1,obj2){
            for(var key in obj2){
                obj1[key]=obj2[key];
            }
        }
        //默认参数
        var defaults={
            async:true
        }
        //后面使用默认参数
        extend(defaults,opt);
    
        var xhr=new XMLHttpRequest();
        if(defaults.type.toLowerCase()=='get'){
            //get请求
            if(defaults.data){
                defaults.url+='?'+defaults.data;
            }
            xhr.open(defaults.type,defaults.url,defaults.async);
            xhr.send(null);
        }else{
            //post请求
            xhr.open(defaults.type,defaults.url,defaults.async);
            xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
            xhr.send(defaults.data);
        }
        //接收数据返回
        xhr.onreadystatechange=()=>{
            if(xhr.readyState==4){
                if(xhr.status==200){
                    //成功接收是数据
                    if(defaults.success){  //如果有这个数据就返回
                        defaults.success(xhr.responseText);//是实参
                    }
                }else{
                    alert('错误http状态码是:'+xhr.status)
                }
            }
        }
    }
         //调用
        (function (){
            let name =document.getElementById('name');
            let inf=document.getElementById('inf');
            
            name.onblur=()=>{
                let username=name.value.trim();
                if(username){
                    //非空 发送ajax请求
                 ajax2({
                        type:'get',
                        url:'api/02checkname.php',
                        data:'name='+username,
                        success:function(str){
                        // console.log(str);
                        if(str=='yes'){
                            inf.innerHTML='该用户名可以注册,请继续填写哦';
                            inf.style.color='green';
                        }else{
                            inf.innerHTML='该用户名太受欢迎,请换一个哦';
                            inf.style.color='red';
                        }
                        console.log(str);
                      }
                 })
                }else{
                    inf.innerHTML='请输入用户名';
                    inf.style.color='red';
                }
            }
        })()