日期:2014-05-16  浏览次数:20629 次

javascript封装一个Ajax方法。
求解。不想用Jquery。

------解决方案--------------------
楼主搜下 ajax类 很多的。

比如

JScript code

/**
 * 执行基本ajax请求,返回XMLHttpRequest
 * Ajax.request(url,{
 *         async     是否异步 true(默认)
 *         method     请求方式 POST or GET(默认)
 *         data     请求参数 (键值对字符串)
 *         success 请求成功后响应函数,参数为xhr
 *         failure 请求失败后响应函数,参数为xhr
 * });
 *
 */
Ajax = 
function(){
    function request(url,opt){
        function fn(){}
        var async   = opt.async !== false,
            method  = opt.method     || 'GET',
            data    = opt.data         || null,
            success = opt.success     || fn,
            failure = opt.failure     || fn;
            method  = method.toUpperCase();
        if(method == 'GET' && data){
            url += (url.indexOf('?') == -1 ? '?' : '&') + data;
            data = null;
        }
        var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
        xhr.onreadystatechange = function(){
            _onStateChange(xhr,success,failure);
        };
        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的各种框架也是把上面的方法帮你封装在内了。除此如果你不想用jquery,其他ajax框架有好多:

ASP.NET AJAX,
Dojo Toolkit,
Ext JS, 
MooTools, 
Prevel Framework,
Prototype, 
Spry framework, 
YUI Library,