ajax的readystate一直为0,没有进入到processor方法中

时间:2020-12-07 05:50:41
代码如下:
//定义一个变量用于存放XMLHttpRequest对象
var xmlHttp; 

//该函数用于创建一个XMLHttpRequest对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");


else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();

}
}

//这是一个启动AJAX异步通信的方法
function checkname()
{
var a=1;
var b=0;
var name = document.getElementById("username").value;

if (name == ""){//如果尚未输入注册名

document.getElementById("namets").innerHTML="*用户名必填(最长16位)";
  document.getElementById("namets").style.cssText="font-size:11px;color:red;";

  document.getElementById("names").value=b;
  add();
  return;
}
else {
document.getElementById("names").value=a;
document.getElementById("namets").innerHTML="";
document.getElementById("namets").style.cssText="font-size:11px;color:blue;";
return;
}

//创建一个XMLHttpRequest对象
createXMLHttpRequest();
//通过GET方法向指定的URL建立服务器的调用,这个链接中的action的方法是查询数据库的
xmlHttp.open("GET", "regcontinue.action?username="+name+"&t="+new Date().getTime(),true);
xmlHttp.onreadystatechange =function(){ processor(str1,str2);};
//发送请求
xmlHttp.send(null);

}
//这是一用来处理状态改变的函数
function processor () 
{
//定义一个变量用于存放从服务器返回的响应结果
var responseContext;
var username = document.getElementById("username").value;
alert("processor begain1");
alert("after process:"+xmlHttp.readyState);
document.getElementById("namets").innerHTML=xmlHttp.readyState;

if(xmlHttp.readyState == 4) 
{ //如果响应完成
if(xmlHttp.status == 200) 
{//如果返回成功
//取出服务器的响应内容
alert("mmmmmmmmmmm200in");
alert(responseContext.length);
//如果注册名检查有效
if ( responseContext.indexOf("1") )
// if ( responseContext.value.equals("ok") )
{
document.getElementById("namets").innerHTML="√";document.getElementById("namets").style.cssText="font-size:11px;color:green;";
document.getElementById("names").value=a;add();
}
else
{
document.getElementById("namets").innerHTML="×已存在的用户名";
document.getElementById("namets").style.cssText="font-size:11px;color:red;";

 document.getElementById("names").value=b;add();
}

}

}
else{
alert("readyState != 4");
alert("after !4: "+xmlHttp.readyState);
alert("响应失败!");
}
}

3 个解决方案

#1


jsp页面中:<input type="text" id="username" name="username" onBlur="checkname();"/> </td>
可是一直没有反应,没有调用到那个状态改变事件process方法,我用的是IE浏览器,各位大虾们帮忙看下吧

#2


function checkname() {
    var a = 1;
    var b = 0;
    var name = document.getElementById("username").value;

    if (name == "") {//如果尚未输入注册名

        document.getElementById("namets").innerHTML = "*用户名必填(最长16位)";
        document.getElementById("namets").style.cssText = "font-size:11px;color:red;";

        document.getElementById("names").value = b;
        add();
         return;
    }
    else {
        document.getElementById("names").value = a;
        document.getElementById("namets").innerHTML = "";
        document.getElementById("namets").style.cssText = "font-size:11px;color:blue;";
         return;
    }


你这个checkname都直接return退出函数了,根本没有执行下面的ajax代码好不。。去掉else的return

#3


确实如此啊,不过在IE5里面状态一直为1,而在FF中一切正常

#1


jsp页面中:<input type="text" id="username" name="username" onBlur="checkname();"/> </td>
可是一直没有反应,没有调用到那个状态改变事件process方法,我用的是IE浏览器,各位大虾们帮忙看下吧

#2


function checkname() {
    var a = 1;
    var b = 0;
    var name = document.getElementById("username").value;

    if (name == "") {//如果尚未输入注册名

        document.getElementById("namets").innerHTML = "*用户名必填(最长16位)";
        document.getElementById("namets").style.cssText = "font-size:11px;color:red;";

        document.getElementById("names").value = b;
        add();
         return;
    }
    else {
        document.getElementById("names").value = a;
        document.getElementById("namets").innerHTML = "";
        document.getElementById("namets").style.cssText = "font-size:11px;color:blue;";
         return;
    }


你这个checkname都直接return退出函数了,根本没有执行下面的ajax代码好不。。去掉else的return

#3


确实如此啊,不过在IE5里面状态一直为1,而在FF中一切正常