有谁知道如何使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范围内的任何内容都是“成功”。