gpt4 book ai didi

javascript - 使用 XMLHttpRequest 后返回 false 的问题

转载 作者:行者123 更新时间:2023-11-30 13:36:58 25 4
gpt4 key购买 nike

我找到了这个 Related entry和其他一些人,但我还没有完全找到我的答案,所以我发布了新的。我正在尝试使用我对 Ajax 的理解从 JavaScript 运行数据库查询。如果电子邮件已经在数据库中,我需要返回 false,如果没有,我需要返回 true,但我似乎无法弄清楚我做错了什么。在我开始乱搞并弄得一团糟之前,我已经发布了我的第一次尝试。

JavaScript:似乎无论如何都会返回 true。

function emailvalid(){

var email = document.getElementById('email').value;
var confirmemail = document.getElementById('cemail').value;
if(email != '' && confirmemail != '')
{
if(email == '')
{
document.getElementById('email').style.backgroundColor ='red';
document.getElementById('tdemail').style.color = 'red';
document.getElementById('tdemail').innerHTML = 'You must enter a valid email address.';
document.getElementById('tdcemail').innerHTML = '';
document.getElementById('cemail').value = '';
return false;
}

xmlhttp = new XMLHttpRequest();
var url="phpfiles/checkemail.php";
url = url+"?email="+email+"&cemail="+confirmemail;
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4)
{
var answer = xmlhttp.responseText;
if(answer == 'r0')
{

document.getElementById('email').style.backgroundColor ='green';
document.getElementById('tdemail').style.color = 'red';
document.getElementById('tdemail').innerHTML = 'This email address is already associated with an exiting account. Please login or use a different email address.';
document.getElementById('tdcemail').innerHTML = '';
document.getElementById('cemail').value = '';
return false;
}
else if(answer == 'r1')
{

document.getElementById('tdemail').style.color = 'green';
document.getElementById('email').style.backgroundColor ='green';
document.getElementById('tdemail').innerHTML = "Emails match and are valid";
document.getElementById('tdcemail').style.color = 'green';
document.getElementById('tdcemail').innerHTML = "Emails match and are valid";
document.getElementById('cemail').style.backgroundColor ='green';
return true;
}
else if(answer == 'r2')
{

document.getElementById('tdemail').style.color = 'red';
document.getElementById('email').style.backgroundColor ='red';
document.getElementById('tdemail').innerHTML = "Email is not valid";
document.getElementById('tdcemail').style.color = 'red';
document.getElementById('tdcemail').innerHTML = "Email is not valid.";
document.getElementById('cemail').style.backgroundColor ='red';
return false;
}
else if(answer == 'r3')
{

document.getElementById('tdemail').style.color = 'green';
document.getElementById('email').style.backgroundColor ='green';
document.getElementById('tdemail').innerHTML = "Email is valid";
document.getElementById('tdcemail').style.color = 'red';
document.getElementById('tdcemail').innerHTML = "Emails do not match";
document.getElementById('cemail').style.backgroundColor ='red';
return false;
}
else if(answer == 'r4')
{

document.getElementById('tdemail').style.color = 'red';
document.getElementById('email').style.backgroundColor ='red';
document.getElementById('tdemail').innerHTML = 'Please enter a valid email address.';
document.getElementById('tdcemail').style.color = 'red';
document.getElementById('tdcemail').innerHTML = 'Please enter a valid email address.';
document.getElementById('cemail').style.backgroundColor ='red';
return false;
}
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send(null);

}
else
{
document.getElementById('tdemail').style.color = 'red';
document.getElementById('email').style.backgroundColor ='red';
document.getElementById('tdemail').innerHTML = "Email is not valid";
document.getElementById('tdcemail').style.color = 'red';
document.getElementById('tdcemail').innerHTML = "Email is not valid.";
document.getElementById('cemail').style.backgroundColor ='red';
return false;
}
}

innerHTML 的东西工作得很好,这也是我感到困惑的原因。

PHP:据我所知工作正常。

<?php
$email = $_GET['email'];
$cemail = $_GET['cemail'];
$emailvalidstring = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";
include('connection.php');

$checkemailquery = "SELECT email FROM users WHERE email='".$email."'";
$checkemailresult = mysql_query($checkemailquery);

// if query failed.
if(!$checkemailresult)
{
$error = mysql_error();
print $error;
exit;
}
//if the query did run, the email exists. Print error and exit.
if(mysql_affected_rows() != 0)
{
echo "r0";
return false;
}
else{
if(preg_match($emailvalidstring, $email) && $email == $cemail)
{
echo "r1";
return true;
}
else if(!preg_match($emailvalidstring, $email) && $email == $cemail)
{
echo "r2";
return false;
}
else if(preg_match($emailvalidstring, $email) && $email != $cemail)
{
echo "r3";
return false;
}
else if(!preg_match($emailvalidstring, $email) && $email != $cemail)
{
echo "r4";
return false;
}
}
?>

html:我让它做了双重检查,一次是为了提醒用户它是否已经被占用,然后在服务器上进行第二次检查以确保它仍然是真的。 cemail 是确认邮件。

<form  id="newaccount" name="newaccount" method="post" action="phpfiles/accountcode.php" onSubmit="return emailvalid()" >
<input type="text" id="email" onBlur="emailvalid()"/>
<input type="text" id="cemail" onBlur="emailvalid()" />
<input type="submit" value="New"/>
</form>

我希望我已经把它布置得够好了。我对任何想法都持开放态度,因为我在这方面还很陌生。

最佳答案

您在匿名回调函数中返回 false,而不是在 emailValid 函数中返回。只需声明一个全局 bool 变量并在匿名回调函数中相应地更改它。

关于javascript - 使用 XMLHttpRequest 后返回 false 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4434470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com