通用的XHR
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<script>
//检测IE中的MSXML版本
function createXMLHttp() {
var aVersions = [ "MSXML2.XMLHttp.5.0",
"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp","Microsoft.XMLHttp"
];
for (var i = 0; i < aVersions.length; i++) {
try {
var oXmlHttp = new ActiveXObject(aVersions[i]);
return oXmlHttp;
} catch (oError) {
//Do nothing
}
}
throw new Error("MSXML is not installed.");
}
//通用的XHR创建
function createXMLHttp() {
if (typeof XMLHttpRequest != "undefined") {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
var aVersions = [ "MSXML2.XMLHttp.5.0",
"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp","Microsoft.XMLHttp"
];
for (var i = 0; i < aVersions.length; i++) {
try {
var oXmlHttp = new ActiveXObject(aVersions[i]);
return oXmlHttp;
} catch (oError) {
//Do nothing
}
}
}
throw new Error("XMLHttp object could be created.");
}
//onreadystatechange事件
var oXmlHttp = zXmlHttp.createRequest();
oXmlHttp.open("get", "info.txt", true);
oXmlHttp.onreadystatechange = function () {
if (oXmlHttp.readyState == 4) {
alert("Got response.");
}
};
//The last step is to call the send() method, which actually sends the request. This method accepts a single argument, which is a string for the request body. If the request doesn't require a body (remember, a GET request doesn't), you must pass in null:
var oXmlHttp = zXmlHttp.createRequest();
oXmlHttp.open("get", "info.txt", true);
oXmlHttp.onreadystatechange = function () {
if (oXmlHttp.readyState == 4) {
alert("Got response.");
}
};
oXmlHttp.send(null);
//得到数据 responseText or responseXML
var sData = oXmlHttp.responseText;
if (oXmlHttp.status == 200)//这里一定要设置为200因为就算服务器发生错误,readyState的值还是为4
{
alert("Data returned is: "+ oXmlHttp.responseText;
} else {
alert("An error occurred: "+ oXmlHttp.statusText;
}
//得到头部信息
var sContentType = oXmlHttp.getResponseHeader("Content-Type");
if (sContentType == "text/xml") {
alert("XML content received.");
} else if (sContentType == "text/plain") {
alert("Plain text content received.");
} else {
alert("Unexpected content received.");
}
var sHeaders = oXmlHttp.getAllResponseHeaders();
var aHeaders = sHeaders.split(/\r?\n/);
for (var i=0; i < aHeaders.length; i++) {
alert(aHeaders[i]);
}
//加入首部信息
var oXmlHttp = zXmlHttp.createRequest();
oXmlHttp.open("get", "info.txt", true);
oXmlHttp.onreadystatechange = function () {
if (oXmlHttp.readyState == 4) {
alert("Got response.");
}
};
oXmlHttp.setRequestHeader("myheader", "myvalue");
oXmlHttp.send(null);
//同步请求
oXmlHttp.open("get", "info.txt", false);
oXmlHttp.send(null);
if (oXmlHttp.status == 200) {
alert("Data returned is: "+ oXmlHttp.responseText;
} else {
alert("An error occurred: "+ oXmlHttp.statusText;
}
</script>
</HEAD>
<BODY>
</BODY>
</HTML>