• 封装XMLHttpReuqest


    //xmlHttp.js
    var Request = new Object();
    Request.reqList = [];
    function createXMLRequest()
    {
        var xmlHttp=false;
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e){
          try {
              xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
          }
         catch (E){
              xmlHttp = false;
          }
        }
        if (!xmlHttp && typeof XMLHttpRequest!='undefined')
        {
            xmlHttp = new XMLHttpRequest();
        }
        return xmlHttp;
    }

    Request.send = function(url, method, callback, data)
     {
        var xmlHttp=createXMLRequest();
        xmlHttp.onreadystatechange = function()
        {
        if (xmlHttp.readyState == 4)
        {
                if (xmlHttp.status < 400)
                {
                    callback(xmlHttp,data);
                }
                else
                {
                    alert("当加载数据时发生错误 :\n" + xmlHttp.status+ "/" + xmlHttp.statusText);
                }
                //删除XMLHTTP,释放资源
                try {
                    delete xmlHttp;
                    xmlHttp = null;
                } catch (e) {}
            }
        }
        //如果以POST方式回发服务器
        if (method=="POST")
         {
            xmlHttp.open("POST", url, true);
            xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');        
            xmlHttp.send(data);
            Request.reqList.push(xmlHttp);
        }
        //以GET方式请求
        else
        {
            xmlHttp.open("GET", url, true);
            xmlHttp.send(null);
            Request.reqList.push(xmlHttp);
        }
        return xmlHttp;
    }
    //全部清除XMLHTTP数组元素,释放资源
    Request.clearReqList = function()
    {
        var ln = Request.reqList.length;
        for(var i=0; i<ln; i++)
        {
            var xmlHttp = Request.reqList[i];
            if(xmlHttp)
            {
                try{
                    delete xmlHttp;
                } catch (e) {}
            }
        }
        Request.reqList = [];   
    }

    //进一步封装XMLHTTP以GET方式发送请求时的代码
    Request.sendGET = function(url,callback)
    {
        Request.clearReqList();
        return Request.send(url, "GET", callback, null);
    }
    //进一步封装XMLHTTP以POST方式发送请求时的代码
    Request.sendPOST = function(url, callback,data)
    {
        Request.clearReqList();
        Request.send(url, "POST", callback, data);
    }

    HelloWorld 示例:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>无标题页</title>
        <script type="text/javascript" src="xmlHttp.js"></script>
        <script type="text/javascript">
        function callback(req,data)
        {
            document.getElementById("msg").innerHTML = req.responseText;
        }
        </script>
    </head>
    <body>
        <input id="Button1" type="button" value="button" onclick="Request.sendGET('HelloWorld.txt', callback)" />
        <div id="msg"></div>
    </body>
    </html>

    HelloWorld.txt
    就一行:HelloWorld




  • 相关阅读:
    2019 SDN阅读作业
    第02组 Alpha冲刺(2/6)
    2019 SDN上机第3次作业
    第02组 Alpha冲刺(1/6)
    2019 SDN上机第2次作业
    bzoj 3207 可持久化线段树
    bzoj 3524 可持久化线段树
    HDU 4757 可持久化trie树
    bzoj 3197 DP
    poj 2104 可持久化线段树
  • 原文地址:https://www.cnblogs.com/linsongbin/p/1022964.html
Copyright © 2020-2023  润新知