首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

AJAX 跨瀏覽器建立 XMLHttpRequest 物件通用函式

     編輯:更多程式設計知識

問題

IE 早期版本使用 ActiveXObject (Microsoft.XMLHTTP, Msxml2.XMLHTTP),現代瀏覽器支援標準 XMLHttpRequest。需撰寫相容函式自動偵測並建立正確物件。

通用建立函式

function getXMLHttpRequest() {
    var xmlhttp;
    if (window.XMLHttpRequest) { // 標準瀏覽器: Firefox, Chrome, Safari, IE7+
        try {
            xmlhttp = new XMLHttpRequest();
            xmlhttp.overrideMimeType("text/html;charset=UTF-8"); // 強制 UTF-8
        } catch (e) {}
    } else if (window.ActiveXObject) { // IE6 及舊版
        var versions = [
            "Msxml2.XMLHTTP.6.0",
            "Msxml2.XMLHTTP.3.0",
            "Msxml2.XMLHTTP",
            "Microsoft.XMLHTTP"
        ];
        for (var i = 0; i < versions.length; i++) {
            try {
                xmlhttp = new ActiveXObject(versions[i]);
                break;
            } catch (e) {}
        }
    }
    return xmlhttp;
}

使用範例

function ajaxRequest(url, callback) {
    var xhr = getXMLHttpRequest();
    if (!xhr) { alert("瀏覽器不支援 AJAX"); return; }
    
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) callback(xhr.responseText);
            else callback(null, "HTTP " + xhr.status);
        }
    };
    xhr.open("GET", url, true);
    xhr.send(null);
}

// 呼叫
ajaxRequest("api/data", function(text, err) {
    if (err) console.error(err);
    else console.log("收到:", text);
});

版本選擇建議

  • Msxml2.XMLHTTP.6.0:Vista/IE7+ 內建,效能最好、支援完整 HTTP 標準。
  • Msxml2.XMLHTTP.3.0:XP SP2+ 內建,廣泛相容。
  • Microsoft.XMLHTTP:最舊版本,僅作最後備援。

現代替代方案

新專案建議直接使用 fetch() API 或 axios、jQuery.ajax 等成熟庫,僅在維護舊專案或極度輕量環境需手寫相容層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved