今天写Ajax ,但是发现在chrome和firefox下XMLHttpRequest.status&&XMLHttpReques.readyState==4
一点问题也没有,但是在IE下就会报错,
想了好久也没搞懂,百度了一下发现:
XMLHttpRequest的整个工作流程,
它首先检查XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),
然后根据服务器的设定询问请求状态,如果一切已经就绪(status=200),那么就执行下面需要的操作。
所以,最好是XMLHttpReques.readyState写在XMLHttpReques.status的前面,
最好写成是
function processAjaxResponse() {
//状态标识为已完成
if (xhr.readyState == 4) {
//已就绪
if (xhr.status == 200) {
document.getElementById('votes').innerHTML = xhr.responseText;
} else {
alert("There was a problem retrieving the XML data: " +xhr.statusText);
}
}
}
ajax的状态、属性 如下
onreadystatechange 每次状态改变所触发事件的事件处理程序。
responseText 从服务器进程返回数据的字符串形式。
responseXML 从服务器进程返回的DOM兼容的文档数据对象。
status 从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)
status Text 伴随状态码的字符串信息
readyState 对象状态值,0—未初始化 1—正在加载 2—加载完毕 3—交互 4—完成。
创建ajax请求对象
function createRequest() {
request = false;
if (window.XMLHttpRequest) {
//对于Mozilla﹑Netscape﹑Safari等浏览器,创建XMLHttpRequest
request = new XMLHttpRequest();
if (request.overrideMimeType) {
//如果服务器响应的header不是text/xml,可以调用其它方法修改该header
request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {
//对于Internet Explorer浏览器,创建XMLHttpRequest
try {
requestt = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
return request;
}