自封装的AJAX

/*
*
*create by royal in 2019/1/23
*
*royalAjax 自封装ajax函数
*
*paramsObj JSON类型参数
*require params: 
*    type : string
*    url     : string
*    data : JSON
*    success : function
*
*/
(function(){
    function royalAjax(paramsObj){
        //处理参数
        if(paramsObj.type.toLowerCase()=='get'){
            var arr=[];
            for(var pro in paramsObj.data){
                var str =pro+'='+paramsObj.data[pro];
                arr.push(str);
            }
            var canshuStr = arr.join('&');            
            //将参数添加到url后
            paramsObj.url +=paramsObj.url.indexOf('?')== -1
            ?'?'+canshuStr
            :'&'+canshuStr;
        }else if(paramsObj.type.toLowerCase()=='post'){
            var formdata =new FormData();
            for(var pro in paramsObj.data){
                formdata.append(pro,paramsObj.data[pro]);
            }
        }else{
            console.log("无效的请求类型!!");
        }

        //准备xhr对象
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange =function(){
            if(xhr.readyState==4){
                if(xhr.status==200){
                    //请求回来后调用success
                    paramsObj.success(JSON.parse(xhr.responseText));
                }
            }
        }

        //准备发送
        xhr.open(paramsObj.type, paramsObj.url, true);
        //发送请求
        if(paramsObj.type.toLowerCase()=='get'){
            xhr.send(null);
        }else if(paramsObj.type.toLowerCase()=='post'){
            xhr.send(formdata);
        }else{
            console.log("请求类型错误!");
        }
    }
    window.royalAjax= royalAjax;
})();

猜你喜欢

转载自www.cnblogs.com/royal6/p/10308567.html