您的位置:首页 > Web前端 > JavaScript

JavaScript的Ajax数据请求与浏览器兼容

2015-10-19 18:17 706 查看
var ajaxRequest = function (url, callback) {
    var xmlhttp = createXmlHttpRequest();
    if (xmlhttp === null) {
        alert("你的浏览器不支持 XMLHttpRequest");
        return;
    }
    else {
        this.xhr = xmlhttp;
    }

    var scope = this;

    this.xhr.onreadystatechange = function () {
        if (scope.xhr.readyState === 4) {
            if (scope.xhr.status === 200 || scope.xhr.status === 0) {

                if (callback !== undefined) {
                    callback(scope.xhr);
                }
            }
            else {
            }
        }
    };

    this.request = function () {
        try {
            scope.xhr.open('GET', url, true);
            scope.xhr.send(null);
        } catch (e) {

        }
    }
}

function createXmlHttpRequest() {
    var xhr_h = null;
    if (window.XMLHttpRequest) { //For IE7+, Firefox, Chrome, Opera, Safari
        xhr_h = new XMLHttpRequest();
        if (xhr_h.overrideMimeType) {
            xhr_h.overrideMimeType("text/xml");
        }
    }
    else if (window.ActiveXObject) {
        try {
            xhr_h = new ActiveXObject("msxml2.xmlhttp");
        }
        catch (e) {
            xhr_h = new ActiveXObject("microsoft.xmlhttp");
        }
    }

    return xhr_h;
}


var xmlParse = function (xmlFile) {
var xmlDoc = null;
if (window.XMLHttpRequest) { //For IE7+, Firefox, Chrome, Opera, Safari
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlFile, "text/xml");
}
else if(window.ActiveXObject){
try {
xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.loadXML(xmlFile);
} catch (e) {
try {
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.loadXML(xmlFile);
} catch (e2) {
xmlDoc = null;
alert(e.message);
}
}
}

return xmlDoc;
}


var requestBNodes = function(url){//解析
var request = new ajaxRequest(url,function(xhr){
var xmlDoc = xmlParse(xhr.responseText);
var versions = xmlDoc.getElementsByTagName("Version");

if (scope.callback != false) {
scope.callback();
}
});
request.request();
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: