先铺垫一下知识:
readystate 属性存有 XMLHttpRequest 的状态信息,也就是代表着请求数据的过程,是由0~4代表,具体见(onreadystatechange)
status:跟readystate一起变化的属性,200表示成功,404表示未找到页面,还有很多其他的值表示不同的问题
只要readystate变化,就会触发onreadystatechange方法
我们先看一个例子:
<html>
<head>
<script type="text/javascript">
function loadXMLDOC(url,cfunc) {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function parseXML() {
loadXMLDOC("demo.txt",function(){
console.log(xmlhttp.status);
if(xmlhttp.readyState==4&&xmlhttp.status==0){
xmlDoc = xmlhttp.responseText;
console.log(xmlDoc);
document.getElementsByTagName("div")[0].innerHTML=xmlDoc;
}
});
}
</script>
</head>
<body onload="parseXML()">
<h1>W3School.com.cn Internal Note</h1>
<div style="width: 100px;height: 100px;"></div>
<button type="button" onclick="parseXML()">la</button>
</body>
</html>
所以我们这个例子中的onreadystatechange需要赋值一个函数,为什么我们的判断语句里面是写着status==0而不是200呢,因为:
如果在本地运行(如:C:\\ajax\\ helloworld.htm),那么status属性不管是在”成功”还是”页面未找到”的情况下,都返回的是0。
也就是说没有通过Web服务器形式的Ajax请求返回值都是0;
也就是我们的demo.txt是本地文件,ajax请求根本就没有通过服务器,所以status的值只能是0
并且我们在这个例子中封装了一个loadeXMLDOC方法,里面的参数可以更好的实现ajax请求