• 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);
        }
    }
  • 相关阅读:
    [leetCode]剑指 Offer 43. 1~n整数中1出现的次数
    [leetCode]剑指 Offer 42. 连续子数组的最大和
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/human/p/3469095.html
Copyright © 2020-2023  润新知