使用语法电子邮件检查器实现实时电子邮件检查器

时间:2015-03-28 19:04:35

标签: javascript php jquery mysql ajax

我遵循了一个示例http://formvalidation.io/examples/using-data-returned-validator/,并且能够对电子邮件和用户名实施简单验证。我发现了另一个使用ajax调用实时电子邮件检查程序php脚本的演示/示例。

我还没想到的是如何将实时用户名检查器与标准验证器一起实现(组合),以便它既检查电子邮件是否具有有效格式,而且可以使用,而不是注册会员已经。搞乱javascript,我已经让验证器看到我的php脚本,使用AJAX帖子check_email.php。

但是,我没有正确的语法来使验证器利用php脚本的结果来返回类似于' Duplicate"或"使用中的电子邮件"。电子邮件的html:

<!-- EMAIL -->
<div class="form-group">
  <div class="row">
    <label class="col-xs-6 control-label">Email address</label>
    <div class="col-xs-6"  style='clear:left;width: 50%;'>
      <input type="text" class="form-control email" name="email" />
    </div>
  </div>
</div>

javascript的相关部分:

<script>
  $(document).ready(function() {
    $('#taskForm').formValidation({
      framework: 'bootstrap',
      icon: {
        // required: 'fa fa-asterisk',
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
      },
      fields: {

        'email': {
           validators: {
            notEmpty: {
              message: 'The email address is required'
            },
            emailAddress: {
              message: 'The input is not a valid email address'
            }
            ,
            remote: {
              type: 'POST',
              url: 'check_email.php',
              message: 'Duplicate or whatever ...',
              cache: false,
              success: function(result){
                var result=remove_whitespaces(result);
                if(result=='')
               {
                  // Do something ...
                }
              }
            }
          }
        },
      }
    })
  });
</script>

要查看演示表单,请访问http://dottedi.us/validation/validator.php。为了说明直播检查工具使用&#39; sowhat&#39;和电子邮件地址&#39; sowhat@dottedi.biz'去测试。我使用用户名检查器单独使用用户名只是为了表明它有效,而不是所需的方法。电子邮件目前已被我的代码破坏。

如有必要,我可以修改check_email.php。目前它返回$ HTML =&#39;电子邮件存在&#39 ;;如果是重复的话。

问题:如何更改远程函数的结构和语法,以便它可以使用check_email.php的响应?

哦,这是check_email.php中的php代码:

<?php
include ("mysql_connection.php");

$HTML = "";
if(isset($_POST['email']) && !empty($_POST['email']))
{
  $email=strtolower(mysql_real_escape_string($_POST['email']));
  $query="select * from members where LOWER(email)='$email'";
  $res=mysql_query($query);
  $count=mysql_num_rows($res);

  if($count > 0){ $HTML='email exists'; }else{ $HTML=''; }
}

echo $HTML;

?>

1 个答案:

答案 0 :(得分:0)

我一直在挖掘并找到答案:http://formvalidation.io/validators/remote/

1)将相关的javascript更改为:

remote: {
    message: 'This email address is taken',
    url: 'check_email.php',
    type: 'POST'
}

2)更改了check_email.php以返回JSON格式响应:

if ( $count > 0 ) { $status = false; } else { $status = true; }

if(isset($status))
{
  $data = array(
    "valid"     => $status,
    "email"     => $email // OPTIONAL
  );
 echo json_encode($data);
}