Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AJAX和PHP检查用户是否存在_Javascript_Php_Jquery_Sql_Ajax - Fatal编程技术网

Javascript 使用AJAX和PHP检查用户是否存在

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+

我正在尝试创建一个注册表单,用于检查数据库中是否存在该用户,我插入了一个示例用户,当我尝试与该用户注册时,它没有说该用户已被使用。我做错了什么

JavaScript:

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语句影响的行数。您正在执行
选择
,因此此值将始终为be
0
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);