>웹 프론트엔드 >JS 튜토리얼 >JavaScript는 ajax js를 자체적으로 캡슐화합니다.

JavaScript는 ajax js를 자체적으로 캡슐화합니다.

高洛峰
高洛峰원래의
2016-11-26 14:49:341317검색

[javascript]
/**   
* 执行基本ajax请求,返回XMLHttpRequest   
*  Ajax.request({   
*  url
*  async 是否异步 true(默认)  
*  method 请求方式 POST or GET(默认)  
*  data 请求参数 (键值对字符串)  
*  success 请求成功后响应函数,参数为xhr  
*  error 请求失败后响应函数,参数为xhr  
*  });   
*/     www.2cto.com
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 
    }; 
}(); 
[javascript] 
 Ajax.request({ 
    url : path + "/report/topn/topn_data.jsp", 
    data : { 
        datatype : datatype 
    }, 
    success : function(xhr) { 
        onData(xhr.responseText); 
    }, 
    error : function(xhr) { 
         
    } 
});


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.