美文网首页
ajax 请求数据函数封装

ajax 请求数据函数封装

作者: GodlinE | 来源:发表于2017-05-15 19:07 被阅读0次
    (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 请求数据函数封装

          本文链接:https://www.haomeiwen.com/subject/tknhxxtx.html