published on in 前端技术
tags: Javascript

XMLHttpRequest

XMLHTTP是一组API函数集,可被JavaScript、JScript、VBScript以及其它web浏览器内嵌的脚本语言调用,通过HTTP在浏览器和web服务器之间收发XML或其它数据。XMLHTTP最大的好处在于可以动态地更新网页,它无需重新从服务器读取整个网页,也不需要安装额外的插件。该技术被许多网站使用,以实现快速响应的动态网页应用。

ActiveXObject用于兼容IE,XDomainRequest用于兼容IE8。

function getData(type, url, postData, callback) {
    var xmlrequest, isXDomain = false;
    if (window.XDomainRequest) {
        xmlrequest = new XDomainRequest();
        isXDomain = true;
    } else if (window.ActiveXObject) {
        try {
            xmlrequest = new ActiveXObject("Msxml3.XMLHTTP");
        } catch (e1) {
            try {
                xmlrequest = new ActiveXObject("Msxml2.XMLHTTP.6.0");
            }
            catch (e2) {
                try {
                    xmlrequest = new ActiveXObject("Msxml2.XMLHTTP.3.0");
                }
                catch (e3) {
                    try {
                        xmlrequest = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e4) {
                        alertMsg("您的浏览器版本太低,请升级浏览器或更换浏览器。");
                        return;
                    }
                }
            }
        }
    } else if (window.XMLHttpRequest) {
        xmlrequest = new XMLHttpRequest();
    } else {
        alertMsg("您的浏览器版本太低,请升级浏览器或更换浏览器。");
        return;
    }
    xmlrequest.onreadystatechange = function () {
        if (xmlrequest.readyState == 4) {
            if (xmlrequest.status == 0 || xmlrequest.status == 200) {
                callback(xmlrequest.responseText);
            }
        }
    }
    xmlrequest.open(type, url, true);
    if (!isXDomain) {
         xmlrequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    }
    xmlrequest.send(postData);
}