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