zoukankan      html  css  js  c++  java
  • 原生ajax

    (function () {
        function getXhr() {
            let xhr = null,
                ary = [
                    function () {
                        return new XMLHttpRequest();
                    },
                    function () {
                        return new ActiveXObject('Microsoft.XMLHTTP')
                    },
                    function () {
                        return new ActiveXObject('Msxml2.XMLHTTP')
                    },
                    function () {
                        return new ActiveXObject('Msxml3.XMLHTTP')
                    }
                ];
            for (let i = 0; i < ary.length; i++) {
                let cur = ary[i];
                try {
                    xhr = cur();
                    getXhr = cur;
                    break;
                } catch (e) {
                }
            }
            if (!xhr) {
                throw Error('Error')
            }
            return xhr;
        }
    
        function ajax(options) {
            let _defaultOptions = {
                url: '',
                type: 'get',
                dataType: JSON,
                async: true,
                cache: true,
                success: null,
                data: null
            };
            for (let attr in options) {
                if (options.hasOwnProperty(attr)) {
                    _defaultOptions[attr] = options[attr];
                }
            }
            if (_defaultOptions.type.toUpperCase() == 'get' && _defaultOptions.async) {
                if (_defaultOptions.url.indexOf('?') > -1) {
                    _defaultOptions.url += 'ran=' + Math.random()
                } else {
                    _defaultOptions.url += '?ran=' + Math.random();
                }
            }
            let xhr = getXhr();
            xhr.open(_defaultOptions.type, _defaultOptions.url, _defaultOptions.async);
            xhr.responseType = _defaultOptions.dataType;
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && /^2d{2}$/.test(xhr.status)) {
                    _defaultOptions.success.call(this, this.response)
                }
            };
            xhr.send(_defaultOptions.data);
        }
    
        window.ajax=ajax;
    })();
    
  • 相关阅读:
    线程池的创建方式
    lock和synchronized如何选择?
    Java中常用的url签名防篡改方法
    jvm异常记录
    mysql索引
    PHP:PDO prepare预处理
    零度CC JavaScript获取页面、屏幕尺寸大小
    【转】 Javascript中document.execCommand()的用法
    获取元素的属性-border问题
    CSS样式定义的优先级顺序总结
  • 原文地址:https://www.cnblogs.com/Juphy/p/7020136.html
Copyright © 2011-2022 走看看