高手帮忙?Ajax中readyState的问题?
不知道是ajax写的有问题还是浏览器的问题,在有些机子上就是好的,但是在IE8上运行起来就有问题:readyState的状态码总是返回1,不能正常返回状态码4。
具体代码如下:
var http_request = false; //创建对象实例失败的变量
var currentResult = null; //存放服务器返回请求响应文本的变量,html的对象元素
var reponseData = null; //存放服务器返回请求响应数据的变量
//初始化函数
function createXMLHttpRequest(){
http_request = false;
//开始初始化XMLHttpRequest 对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
try{
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME 类别
http_request.overrideMimeType("text/xml");
}
}catch(e){ http_request = false; }
}
else if (window.ActiveXObject) { // IE 浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP"); //较新版本的 Microsoft 浏览器
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP"); //较老版本的 Microsoft 浏览器
} catch (e) { http_request = false; }
}
}
return http_request;
}
//指定处理函数、发送请求的函数
function send_request(url,asynch,reqData) {
//调用初始化函数
http_request = createXMLHttpRequest();
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest 对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
http_request.open("POST", url, asynch);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//发送请求
http_request.send(reqData);
if(!(reponseData==null || reponseData=="")){
return reponseData;
}
}
// 处理返回信息的函数
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
//获得服务器的响应
reponseData = trim(http_request.responseText);//去空格
if(!(currentResult == null || currentResult == "")){
document.getElementById(currentResult).value = reponseData;
}else{//如果没有显示返回结果的地方
//alert(reponseData);
}
} else{ //页面不正常
alert("您所请求的页面有异常。"+"Error: status code is " + http_request.status);
}
}
}
【说明】1. send_request(url,asynch,reqData)中的asynch 的值为true,reqData为传入参数
【问题】在函数send_request(url,asynch,reqData)中,发送数据后得到的responseText的内容,第一次都是null,状态码返回为1,在第二次调用该AJAX的时候就没有问题。我自己再http_request.send(reqData);后面加上alert(reponseData)后,弹出的alert()点击确定后就可以获取到返回的信息。
请各位大虾多多帮助解决问题!谢谢!