ajax 请求数据函数封装

(function(window){
        function AjaxTool(){

        }
        AjaxTool.ajaxRequest = function(param,successFunc,failFunc){
                var requestType = param['requestType'];
                var url = param['url'];
                var paramObj = param['paramObj'];
                var timeout = param['timeout'];

                //创建一个请求
                var xhr;
                if(requestType.toLowerCase() === 'get'){
                        //拿到本地需要传送的数据
                        var codeURL = encodeURI(url + '?' + getStrWithObject(paramObj));
                        xhr.open('get',codeURL,true);
                        //发送请求(拨出电话)
                        xhr.send();
                }else if(requestType === 'post'){
                        //拿到本地需要传送的数据
                        var codeParam = encodeURI(getStrWithObject(paramObj));
                        xhr.open('post',url,true);
                        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                        xhr.send(codeParam);
                }
                //监听服务器响应(等待电话响起)
                xhr.onreadystatechange = function(){
                        //一旦服务器响应就会执行这个函数
                        //处理响应数据
                        if(xhr.readyState == 4){
                                //意味服务器有响应,但是不代表响应正确
                                //判断服务器给的数据是否正确
                                var status = xhr.status;
                                if(status >= 200 && status <=300 || status ==304){
                                        //真正处理数据的操作在这里执行
                                        successFunc(xhr);
                                        //额外的清除取消请求的定时
                                        clearTimeout(timer);
                                } else{
                                        failedFunc();
                                }
                        }
                }
                //等到多少秒之后取消 ajax 请求
                var timer;
                if(timeout > 0){
                        timer = setTimeout(function(){
                                xhr.abort();
                        },timeout)
                }
        }
        window.AjaxTool = AjaxTool;
        function getRandomStr(){
                return Math.random() + (new Date()).getTime();
        }
        function getStrWithObject(paramObj){
                var resultArray = [];
                for(var key in paramObj){
                        var str = key + '=' + paramObj[key];
                        resultArray.push(str);
                }
                resultArray.push('random=' + getRandomStr());
                return resultArray.join('&');   
        }
})(window)

你可能感兴趣的:(ajax 请求数据函数封装)