有谁知道如何使ajax请求功能在不使用jQuery等JavaScript框架的情况下跨浏览器工作?

最佳答案

XMLHttpRequest对象实际上并没有那么复杂。为了广泛兼容,您必须玩一些游戏才能创建对象,但是在此之后,对于简单操作而言,这是相当简单的。

Microsoft在MSDN page for XMLHttpRequest 上有示例,包括一个用于以跨浏览器方式创建对象的函数,该函数支持IE的早期版本。这是他们的例子:

function getXMLHttpRequest()
{
    if (window.XMLHttpRequest) {
        return new window.XMLHttpRequest;
    }
    else {
        try {
            return new ActiveXObject("MSXML2.XMLHTTP.3.0");
        }
        catch(ex) {
            return null;
        }
    }
}

function handler()
{
    if (oReq.readyState == 4 /* complete */) {
        if (oReq.status == 200) {
            alert(oReq.responseText);
        }
    }
}

var oReq = getXMLHttpRequest();

if (oReq != null) {
    oReq.open("GET", "http://localhost/test.xml", true);
    oReq.onreadystatechange = handler;
    oReq.send();
}
else {
    window.alert("AJAX (XMLHTTP) not supported.");
}

我并不是说上述示例是最佳实践的示例(Microsoft似乎在很大程度上由非常缺乏经验的工程师编写了他们的MSDN示例),但它为您提供了一个起点。例如,以上要求成功的响应状态为200,当然HTTP规范明确指出200≤n≤299范围内的任何内容都是“成功”。

09-25 16:50