ajax

ajax.request("ajax.html",{v:Math.random(),num:1},function(data){
     //do something
},'get');

 

var ajax = {
//Xmlhttprequest类
    Xmlhttprequest: function () {
        this.xhr = false;
    },
//外部调用接口
    request: function (url, data, callback, type) {
//每次都创建一个Xmlhttprequest的对象,使ajax调用互不影响
        var xhr = new this.Xmlhttprequest();
        xhr.request(url, data, callback, type);
    }
}
//将{num:1,t:'a'}这种json数据格式转为num=1&t=a这种字符串形式
var json2str = function (data) {
    var _data = [];

    for (var name in data) {
        _data.push(name + "=" + data[name]);
    }
    return _data.join('&');
}
//扩展Xmlhttprequest类的方法
ajax.Xmlhttprequest.prototype = {
//创建XMLHttpRequest
    createXmlHttpRequest: function () {

        if (window.XMLHttpRequest) {
            return new XMLHttpRequest();
        }
        else {
            var a = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0"];
            for (var i = 0, l = a.length; i < l; i++) {
                try {
                    return new ActiveXObject(a[i]);
                } catch (e) {
                }
                ;
            }
        }
    },
//回调函数
    fnCallback: function (callback) {

        if (this.xhr.readyState === 4 && this.xhr.status === 200) {
            callback ? callback(this.xhr.responseText) : void(0);
        }
    },
//ajax请求
    request: function (url, data, callback, type) {

        var that = this;
        var ispost = type === 'post' ? true : false;

        !ispost && (url += (url.indexOf('?') + 1 ? '&' : '?') + json2str(data));

        this.xhr = this.createXmlHttpRequest();

        this.xhr.open(type, url, true);
        ispost ? this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") : '';
        this.xhr.onreadystatechange = function () {
            that.fnCallback(callback);
        };
        this.xhr.send(ispost ? json2str(data) : null);
    }
}

 

posted @ 2013-12-11 12:25  sexy_girl  阅读(254)  评论(0编辑  收藏  举报