我遵循了一个示例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;
?>
答案 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);
}