原生XHR对象

来源:互联网 发布:海信电视看电影软件 编辑:程序博客网 时间:2024/06/05 14:28
/** * Created by czy on 2017/5/14. * 调用:var xhr = createXHR(); */function createXHR(){    if(typeof XMLHttpRequest != "undefined"){        return new XMLHttpRequest();    }    else if(typeof ActiveXObject != "undefined"){        return createIEXHR();    }    else{        throw new Error("没有可用的XHR对象");    }}function createIEXHR(){    //适用于IE7以前的版本 if(typeof arguments.callee.activeXString != "string"){        var versions = ["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"];        var i,len;        for(i=0,len = versions.length;i < len;i++){            try{                new ActiveXObject(versions[i]);                arguments.callee.activeXString = versions[i];                break;            }catch (ex){            }        }    }    return new ActiveXObject(arguments.callee.activeXString);}function xhrPOST(url,data,callback){    var xhr = createXHR();    var dataStr = "";    xhr.open("POST", url, true);    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");    for(key in data){        dataStr += key + "=" + data[key];    }    xhr.send(dataStr);    xhr.timeout = "8000";//IE8+ xhr.onreadystatechange = function(){        var XMLHttpReq = xhr;        if (XMLHttpReq.readyState == 4) {            if (XMLHttpReq.status >= 200 && xhr.status < 300 || xhr.status == 304) {                callback(JSON.parse(XMLHttpReq.responseText));                xhr = XMLHttpReq = null;            }else{                alert("服务器出小差了");            }        }    };    xhr.ontimeout = function(){        timeout();    }}function xhrGET(url,data,callback){    var xhr = createXHR();    url += "?";    for(key in data){        url += key + "=" + data[key] + "&";    }    url = url.slice(0,-1);    xhr.open("get", url, true);    xhr.send(null);    xhr.timeout = "8000";//IE8+ xhr.onreadystatechange = function(){        var XMLHttpReq = xhr;        if (XMLHttpReq.readyState == 4) {            if (XMLHttpReq.status >= 200 && xhr.status < 300 || xhr.status == 304) {                callback(JSON.parse(XMLHttpReq.responseText));                xhr = XMLHttpReq = null;            }else{                alert("服务器出小差了");            }        }    };    xhr.ontimeout = function(){        timeout();    }}function timeout(){    alert("连接超时");}
原创粉丝点击