Javascript 向服务器发出XMLHttp请求时,我收到的状态代码为0,因此无法验证。下面是我的代码,以供审阅

Javascript 向服务器发出XMLHttp请求时,我收到的状态代码为0,因此无法验证。下面是我的代码,以供审阅,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,有一个register.html文件,其中javascript函数向db_check.php发出请求,以验证登录凭据。以下代码无法正常工作,因为它返回错误的状态代码。我搜索了一个解决方案,找到了这个链接:。它讨论了“当有一个XMLHttpRequest在一个窗口的onunload事件中被触发时:XMLHttpRequest实际上是在要关闭的窗口仍然存在时创建的,然后发送请求(即open())当此窗口失去焦点且可能不同的窗口获得焦点时。避免此问题的方法是在新窗口“激活”事件上设置侦听器,该事件在旧

有一个register.html文件,其中javascript函数向db_check.php发出请求,以验证登录凭据。以下代码无法正常工作,因为它返回错误的状态代码。我搜索了一个解决方案,找到了这个链接:。它讨论了“当有一个XMLHttpRequest在一个窗口的onunload事件中被触发时:XMLHttpRequest实际上是在要关闭的窗口仍然存在时创建的,然后发送请求(即open())当此窗口失去焦点且可能不同的窗口获得焦点时。避免此问题的方法是在新窗口“激活”事件上设置侦听器,该事件在旧窗口触发“卸载”事件时设置 有人能用代码片段解释引用的部分吗? 代码如下:

<html>
<head>
<style>
.note {color: #FF0000;}
</style>
<script type="text/javascript">
function validateForm()
{
var xhr=false;
var username=document.getElementById(txt_name);
var pass=document.getElementById(txt_pass);
if(document.getElementById("txt_name").value.length==0)
        var str="\nPlease enter username!";
    else
        str="";
    if(document.getElementById("txt_pass").value.length==0)
        str+="\nPlease enter password!";
    if(str!="")
        alert(str);
    else
        sendReq();
return false;
function sendReq()
{
    var url1="db_check.php?uname="+username;
    var url2= url1+"&password="+pass;
    if (window.XMLHttpRequest) 
    { 
        xhr = new XMLHttpRequest();
    }
    else 
    { 
        if (window.ActiveXObject) 
        {
            try 
            {
                xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
            }
            catch (e) {
            }

        } 
    }
    if (xhr) 
    {
        xhr.onreadystatechange = showValues;
        xhr.open("GET", url2, true); 
        xhr.send(); 

    }
    else 
    { 
        alert("Sorry, but I couldn't create an XMLHttpRequest"); 
    } 
}
function showValues()
{
    if (xhr.readyState == 4) 
    {
        if (xhr.status == 200) 
        {
            if(xhr.responseText=='false')
                alert("Incorrect Username or password!");
            else{
                    alert("Successfully logged-in!");
                    window.location.assign("register.html");
                }
        }
    }
    else 
    {
        var outMsg = "There was a problem with the request " + xhr.status; 
        alert(outMsg);
    }   
}
}   
</script>
</head>
<body bgcolor="#E6E6FA">
<h2>USC-net login</h2>
<form name="myForm" action="" method="post" id="myForm"> 
<fieldset>
<legend align="left">Login</legend>
Username: <input type="text" id="txt_name" name="txt_name" /><br>
Password: <input type="password" id="txt_pass" name="txt_pass" /><br>
<input type="hidden" name="formHidden"/>
<input type="submit" id="btn_submit" name="btn_submit" onclick="validateForm()"    value="Submit"/><br>
<input type="button" id="btn_signup" name="btn_signup" value="Sign-Up"   onclick="javascript:window.location='signup.php';">
<span class="note">*For first time users!</span><br>
</fieldset>
<br><br>    
</form>
</body>
</html>

.注{颜色:#FF0000;}
函数validateForm()
{
var xhr=false;
var username=document.getElementById(txt_名称);
var pass=document.getElementById(txt_pass);
if(document.getElementById(“txt_name”).value.length==0)
var str=“\n请输入用户名!”;
其他的
str=“”;
if(document.getElementById(“txt_pass”).value.length==0)
str+=“\n请输入密码!”;
如果(str!=“”)
警报(str);
其他的
sendReq();
返回false;
函数sendReq()
{
var url1=“db_check.php?uname=“+用户名;
var url2=url1+“&password=“+pass;
if(window.XMLHttpRequest)
{ 
xhr=newXMLHttpRequest();
}
其他的
{ 
if(window.ActiveXObject)
{
尝试
{
xhr=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
捕获(e){
}
} 
}
if(xhr)
{
xhr.onreadystatechange=showValues;
xhr.open(“GET”,url2,true);
xhr.send();
}
其他的
{ 
警报(“抱歉,我无法创建XMLHttpRequest”);
} 
}
函数showValues()
{
if(xhr.readyState==4)
{
如果(xhr.status==200)
{
if(xhr.responseText=='false')
警报(“用户名或密码不正确!”);
否则{
警报(“已成功登录!”);
window.location.assign(“register.html”);
}
}
}
其他的
{
var outMsg=“请求有问题”+xhr.status;
警报(outMsg);
}   
}
}   
USC网络登录
登录
用户名:
密码:

*第一次使用



您获得的状态代码值是多少。此外,在上面的代码中,您已经将sendReq()和showValues()封装在验证表单本身中。这是一个打字错误还是你打算这样使用它?我得到的状态码是0,而不是200或404。封装的函数是验证表单本身的一部分。但我找到了解决办法。经过进一步的考虑,我发现把国旗弄成“假”是符合目的的。我这样做了:xhr.open(“post”,url,false);