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

    /*******************************************************************************  

    ** 用法:  

    ** var mt = new TAjax("WinButton.xml");  

    ** mt.ResponseType = "XML";  

    ** mt.handler = function (vXmlDocument){alert("重载的方法!");}  

    ** mt.exec();  

    *******************************************************************************/  

    function TAjax(vURL)   

    {   

    this.URL          = vURL;   

    this.XMLHTTP      = null;   

    this.ResponseType = "Text"; //Text/XML   

    this.exec = function ()   

        {   

    if (window.XMLHttpRequest) {   

    try {   

    this.XMLHTTP = new XMLHttpRequest();   

                } catch (e) {   

                    alert("错误: " + e.name + " " + "描述: " + e.message);   

    return false;   

                }   

            } else if (window.ActiveXObject) {   

    try {   

    this.XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");   

                } catch (e) {   

    try {   

    this.XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");   

                    } catch (e) {   

                        alert("错误: " + e.name + " " + "描述: " + e.message);   

    return false;   

                    }   

                }   

            }   

    if (!this.XMLHTTP) {   

                alert("不能创建XMLHttpRequest 对象实例.");   

    return false;   

            }   

    /************************************************************************  

            ** For Internet Explorer/Opera  

            ** 对于Internet Explorer/Opera中,在processReqChange方法里面,this引用的是  

            ** XMLHTTP或者XMLHttpRequest对象本身,所以需要给XMLHTTP或者XMLHttpRequest设定  

            ** handler(处理方法)和responseType(返回文档类型),以便于在方法中用this.method()  

            ** 的方式引用。  

            ************************************************************************/  

    this.XMLHTTP.responseType          = this.ResponseType;   

    this.XMLHTTP.handler               = this.handler;   

    /************************************************************************  

            ** For Mozilla/Firefox  

            ** 对于Firefox,在 XMLHttpRequest对象的processReqChange方法里面,this引用的是  

            ** processReqChange方法本身,所以需要把processReqChange方法作为一个Object,另外  

            ** 赋值,设定好handler(处理方法),responseType(返回文档类型),以便于能在方法中用  

            ** this.method()的方式引用。  

            ** 另外,还需要多设定一个对于XMLHttpRequest对象本身的引用,因为在processReqChange  

            ** 方法中this是processReqChange本身,无法直接引用到XMLHttpRequest对象。  

            **   

            ** this.processReqChange.XMLHTTP      = this.XMLHTTP;  

            ** this.processReqChange.handler      = this.handler;  

            ** this.processReqChange.responseType = this.ResponseType;  

            **

            ** 当然,最好的办法是用Firefox支持的addEventListener方法捕获processReqChange事件

            ************************************************************************/  

    if (typeof(this.XMLHTTP.addEventListener) == "function") {   

    this.XMLHTTP.addEventListener("load", this.processReqChange, false);   

            } else {   

    this.XMLHTTP.onreadystatechange    = this.processReqChange;   

            }   

    this.XMLHTTP.open("GET", this.URL, true);   

    this.XMLHTTP.send(null);   

        }   

    this.handler = function (vXmlDocument)   

        {   

            alert(vXmlDocument);   

        }   

    this.processReqChange = function ()   

        {   

    var XMLHTTP = this.XMLHTTP ? this.XMLHTTP : this;   

    if (XMLHTTP.readyState == 4) {   

    if (XMLHTTP.status == 200) {   

    this.handler(this.responseType == "XML" ? XMLHTTP.responseXML : XMLHTTP.responseText);   

                } else {   

                    alert("在接收XML文档时发生错误,代码如下: " + XMLHTTP.status + " " + XMLHTTP.responseText);   

    return false;   

                }   

            }   

        }   

    }   

  • 相关阅读:
    是否可能两个ETH私钥对应同一个地址
    使用 neon-wallet-db + neon-js + NEO-cli /rpc 搭建轻钱包服务端
    从源码看 angular/material2 中 dialog模块 的实现
    个人从源码理解JIT模式下angular编译AppModule的过程
    个人从源码理解angular项目在JIT模式下的启动过程
    使用angular的HttpClient搭配rxjs
    把angular项目整合到.net mvc中
    小程序开发整理
    ABC: Always Be Coding
    postgresql的psql常用命令-4
  • 原文地址:https://www.cnblogs.com/qffxj/p/10131185.html
Copyright © 2011-2022 走看看