Javascript 使用AJAX和PHP检查用户是否存在
我正在尝试创建一个注册表单,用于检查数据库中是否存在该用户,我插入了一个示例用户,当我尝试与该用户注册时,它没有说该用户已被使用。我做错了什么 JavaScript:Javascript 使用AJAX和PHP检查用户是否存在,javascript,php,jquery,sql,ajax,Javascript,Php,Jquery,Sql,Ajax,我正在尝试创建一个注册表单,用于检查数据库中是否存在该用户,我插入了一个示例用户,当我尝试与该用户注册时,它没有说该用户已被使用。我做错了什么 JavaScript: function formSubmit() { document.getElementById('email_valid').innerHTML = ''; var temail=document.forms["signup_form"]["temail"].value.replace(/^\s+|\s+
function formSubmit()
{
document.getElementById('email_valid').innerHTML = '';
var temail=document.forms["signup_form"]["temail"].value.replace(/^\s+|\s+$/g, '');
var atpos=temail.indexOf("@");
var dotpos=temail.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=temail.length)
{
//alert("Not a valid e-mail address");
setTimeout(function(){document.getElementById('email_valid').innerHTML = '<br/>Email must be valid...';},1000);
var temailsub=0;
}
else
{
$.post('/resources/forms/signup/email.php',{email: temail}, function(data){
document.getElementById('email_valid').innetHTML = data;
if(data.exists){
document.getElementById('email_valid').innetHTML = '<br/>The email address you entered is already in use.';
var temailsub=0;
}else{
var temailsub=1;
}
}, 'JSON');
}
if(temailsub==1e)
{
setTimeout(function(){document.getElementById("signup_form").submit();},1000);
}
else
{
return false;
}
}
函数formSubmit()
{
document.getElementById('email_valid')。innerHTML='';
var temail=document.forms[“signup_form”][“temail”].value.replace(/^\s+\s+$/g');
var atpos=淡尾指数(“@”);
var dotpos=temail.lastIndexOf(“.”);
如果(atpos)
我已经检查并再次检查了代码,我仍然不明白为什么它没有检测到电子邮件已被使用…我需要做些什么来修复此问题并在将来避免此问题?问题是返回受上一个SQL语句影响的行数。您正在执行选择
,因此此值将始终为be0
SELECT
不会影响任何行。相反,您需要计算行数:
$query = $pdo->prepare("SELECT COUNT(*) FROM users WHERE email=:email");
$query->execute(array(
":email"=> $_POST['email']
));
$rows = $query->fetchColumn();
echo json_encode(array('exists' => $rows);
同样根据jtheman上面的评论,您应该在JavaScript中将
innetHTML
替换为innerHTML
。1.邮件地址不必是唯一的,除非这是您识别用户的主键。2.您确定要搜索的邮件地址没有空格吗?考虑大小写敏感度吗通过var_转储您遇到的东西并与您的期望进行比较,进行更多的调试。innetHTML不是一个输入错误吗?在您的$.post()中有两次函数…@jtherman,将此添加为答案,我会标记它!我知道你要去哪里,但它仍然不起作用…我可能会犯其他错误吗?哇,我的JavaScript中有一个拼写错误!我编辑了我的帖子,也提到了你的拼写错误。看起来你有两个错误,而不是一个。迈克,完成,标记为答案:)我的IDE没有选择它,因为它是一个PHP IDE。嗯,我只是再试了一次,但你给我的代码总是返回一些东西…所以它总是说电子邮件已被使用。。。
$query = $pdo->prepare("SELECT COUNT(*) FROM users WHERE email=:email");
$query->execute(array(
":email"=> $_POST['email']
));
$rows = $query->fetchColumn();
echo json_encode(array('exists' => $rows);