封装Ajax(转发)

/**    
* 执行基本ajax请求,返回XMLHttpRequest    
*  Ajax.request({    
*  url 
*  async 是否异步 true(默认)   
*  method 请求方式 POST or GET(默认)   
*  data 请求参数 (键值对字符串)   
*  success 请求成功后响应函数,参数为xhr   
*  error 请求失败后响应函数,参数为xhr   
*  });    
*/     
Ajax = function() {  
    function request(opt) {  
        function fn() {  
        }  
        var url = opt.url || "";  
        var async = opt.async !== false, method = opt.method || 'GET', data = opt.data  || null, success = opt.success || fn, error = opt.failure  || fn;  
        method = method.toUpperCase();  
        if (method == 'GET' && data) {  
            var args = "";  
            if(typeof data == 'string'){  
                //alert("string")  
            args = data;  
            }else if(typeof data == 'object'){  
                //alert("object")  
                var arr = new Array();  
                for(var k in data){  
                    var v = data[k];  
                    arr.push(k + "=" + v);  
                }  
                args = arr.join("&");  
            }  
        url += (url.indexOf('?') == -1 ? '?' : '&') + args;  
            data = null;  
        }  
        var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');  
        xhr.onreadystatechange = function() {  
            _onStateChange(xhr, success, error);  
        };  
        xhr.open(method, url, async);  
        if (method == 'POST') {  
            xhr.setRequestHeader('Content-type',  
                    'application/x-www-form-urlencoded;');  
        }  
        xhr.send(data);  
        return xhr;  
    }  
    function _onStateChange(xhr, success, failure) {  
        if (xhr.readyState == 4) {  
            var s = xhr.status;  
            if (s >= 200 && s < 300) {  
                success(xhr);  
            } else {  
                failure(xhr);  
            }  
        } else {  
        }  
    }  
    return {  
        request : request  
    };  
}();  
Ajax.request({  
    url : path + "/report/topn/topn_data.jsp",  
    data : {  
        datatype : datatype  
    },  
    success : function(xhr) {  
        onData(xhr.responseText);  
    },  
    error : function(xhr) {  
          
    }  
});  

  

原文地址:https://www.cnblogs.com/invincible-hehe/p/3696785.html