美文网首页
5 js之回调函数

5 js之回调函数

作者: 一枝妖孽 | 来源:发表于2018-05-28 23:25 被阅读0次

    实现:以面向对象的形式对ajax请求进行重构

    /**
     * 11
     * 原始的 
     */
    window.onload = function() {
        document.getElementById("ok").onclick = function() {
            var xmlhttp = ajaxFunction();
    
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4) {//响应完毕
                    if (xmlhttp.status == 200) {//成功响应
                        alert(xmlhttp.responseText);
                    }
                }
            }
            xmlhttp.open("get", "../HelloWorldServlet", true);
            xmlhttp.send(null);
        }
    
    }
    
    // 10
    function ajaxFunction() {
        var xmlHttp;
        try { // Firefox, Opera 8.0+, Safari
            xmlHttp = new XMLHttpRequest();
        } catch (e) {
            try { // Internet Explorer
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
    
                }
            }
        }
        return xmlHttp;
    }
    
    /**
     * 以面向对象的形式对ajax请求进行重构
     * 
     * 20
     * 
     */
    var ajaxObj = {
        // key value
        xmlhttprequest: '',
        getXMLHttpRequest: function() {
            var xmlHttp;
            try { // Firefox, Opera 8.0+, Safari
                xmlHttp = new XMLHttpRequest();
            } catch(e) {
                try { // Internet Explorer
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                } catch(e) {
                    try {
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch(e) {
    
                    }
                }
            }
            return xmlHttp;
        },
        post: function(ajaxJSON) {
            // 给 request 赋值
            ajaxObj.XMLHttpRequest = ajaxObj.getXMLHttpRequest();
            ajaxObj.XMLHttpRequest.onreadystatechange = function() {
                if(ajaxObj.XMLHttpRequest.readyState == 4) {
                    if(ajaxObj.XMLHttpRequest.status == 200) {
                        ajaxJSON.callback(xmlhttp.responseText);
                    }
                }
            }
            // 
            ajaxObj.XMLHttpRequest.open(ajaxJSON.method, ajaxJSON.url, true);
            ajaxObj.XMLHttpRequest.send(ajaxJSON.data);
    
        }
    }
    
    /**
     * 在onload的时候调用
     * 21
     */
    window.onload = function() {
        ajaxObj.post({
            method: 'post',
            url: '../HelloWorldServlet',
            data: 'a=a',
            callback: function(data) {
                alert(data);
            }
        });
    }
    
    

    相关文章

      网友评论

          本文标题:5 js之回调函数

          本文链接:https://www.haomeiwen.com/subject/kdwnjftx.html