自己写的AJAX封装

只贴出了get部分的代码,post的部分请试着自己完成

var BB = {};
BB.AJAX = function(){
    var oAJAX = {};
    if (typeof XMLHttpRequest == 'undefined' && window.ActiveXObject) {
        var aSignatures = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
        var nSignaturesLength = arrSignatures.length;
        for (var i = 0; i < nSignaturesLength; i++) {
            try {
                oAJAX = new ActiveXObject(aSignatures[i]);
            }
            catch (oError) {
                //ignore
            }
        }
    } else if (XMLHttpRequest) {
        oAJAX = new XMLHttpRequest();
    } else {
        //ajax on this system is not support
    }
    if (typeof oAJAX._initialized == 'undefined') {
        oAJAX.get = function(getArguments){
            if (getArguments.data) {
                //对要传送的数据附加到url上
                getArguments.url += url.indexOf('?') == -1 ? '?' : '&';
                for (var i in getArguments.data) {
                    url += encodeURIComponent(i) + '=' + encodeURIComponent(getArguments.data[i]) + '&';
                }
                getArguments.url.length--;
            }
            this.open('get', getArguments.url, getArguments.sync || 0);
            if (getArguments.callback) {
                //绑定回调事件
                this.onreadystatechange = function(){
                    if (this.readyState == 4) {
                        getArguments.callback();
                    }
                }
            }
            this.send(null);
        };
        oAJAX.post = function(url, data, callback){

        };
        oAJAX._initialized = 1;
    }
    return oAJAX;
}();

调用方式如下:

BB.AJAX.get({
    url: 'templates/' + oTemplates['action'] + '.js',
       sync: 1,
       callback: function(){
           //console.log('templates is load');
       }
});

PS:最近试着写点OOP的JS……嗯,其实JS也是可以很优雅的

关于 江波

UI设计师、关注前端及交互技术,期望能做出创造性的产品!
此条目发表在 学习笔记 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>