Javascript 封装的ajax方法

//ajax的封装
var Ajax = {
    method: 'post',
    asynchronous: true,
    proxy: null,
    contentType: "application/x-www-form-urlencoded",

    create: function () {
        var me = this, proxy;
        var xmlhttpObj = ['MSXML2.XMLHTTP.3.0',
                       'MSXML2.XMLHTTP',
                       'Microsoft.XMLHTTP'];
        if (window.XMLHttpRequest)// firefox 
        {
            proxy = new XMLHttpRequest();
        }
        else if (typeof ActiveXObject != "undefined")// IE 
        {
            for (var i = 0, len = xmlhttpObj.length; i < len; i++) {
                if (!proxy)
                    proxy = new ActiveXObject(xmlhttpObj[i]);
                else
                    break;
            }
        }
        return proxy;
    },
    stateChange: function (proxy, callback) {
        var me = this;
        var readyState = proxy.readyState;
        if (readyState == 4 && proxy.status == 200)
            (callback || function () { }).call(me, proxy.responseText, proxy);
    },
    analyzeParam: function (params) {
        var arrp = [];
        for (var p in (params || {})) {
            arrp.push("&" + p + "=" + params[p]);
        }
        return arrp.join().replace(/\,/g, "");
    },
    request: function (cfg) {
        var me = this;
        var proxy = me.create();
        if (proxy) {
            proxy.onreadystatechange = function () {
                me.stateChange.call(me, proxy, cfg.callback);
            };
        }
        var param = me.analyzeParam(cfg.params);
        try {
            proxy.open(me.method, cfg.url, me.asynchronous);
            proxy.setRequestHeader("Content-type", me.contentType);
            proxy.send(me.analyzeParam.call(me, cfg.params));
        }
        catch (ex) {
            alert(ex.message)
        }
    }
};


//调用方法
Ajax.request({
      url:"text.aspx",
      params:{name:'aa',age:20},
      callback:function(response){alert(response)}
});
posted @ 2011-03-21 10:17  夕阳茶  阅读(737)  评论(0编辑  收藏  举报