【发布时间】:2013-08-12 18:15:36
【问题描述】:
我有一个注册表单,我在其中添加了一个 JQuery 验证插件远程验证。远程验证的目的是检查用户输入的电子邮件/和用户名是否已经存在于我的数据库中(即已经在使用中) ,如果是,将返回一条错误消息。在我添加远程验证之前,表单正在工作。
现在,即使我输入的所有数据都是正确的,我也无法提交表单,而且雪上加霜的是,当我输入数据库中已经存在的电子邮件时,不会出现错误消息。
我的 JQuery 代码:
$(document).ready(function(){
<!--AJAX Call to retrieve type & subtype of industries-->
$("#type").load("getregtype.php");
$('#type').change(function(){
var type=$('#type').val();
$('#subtype').load('getregsubtype.php?type='+type);
});
<!--End of AJAX Call -->
<!--JQuery validation of registration form-->
<!--Set default message for 'equalTo' errors-->
$.extend($.validator.messages, { equalTo: "The values you entered do not match." });
$("#regform").validate({
// Specify the validation rules
rules: {
username: "required",
password: {
required:true,
minlength:6,
},
cpassword: {
required: true,
minlength: 6,
equalTo: "#password"
},
email: {
required: true,
email: true,
remote:"emailcheck.php"
},
cemail: {
required: true,
email: true,
equalTo:"#email"
},
type: {
required: true
},
subtype: {
required: true
},
name: "required"
},
// Specify the validation error messages
messages: {
username: "Please enter a username",
email: {
required:"Please enter an email address",
email:"Please enter a valid email address",
remote:jQuery.format("{0} is already in use")
},
cemail: {
required:"Please enter an email address",
email:"Please reenter your email address",
},
password: {
required: "Please enter a password",
minlength: "Your password must be at least 6 characters long"
},
cpassword: {
required:"Please reenter your password",
minlength: "Your password must be at least 6 characters long"
},
name: "Please enter the name of your business"
},
submitHandler: function(form) {
form.submit();
}
});
});
我的 PHP 页面被远程调用。
<?php
include("cxn.inc");
$query=$cxn->prepare("SELECT * FROM `testdb`.`business` WHERE `Email` = :email");
$query->bindValue(":email",$_GET['email']);
$query->execute();
$count=$query->rowCount();
$mail=$_GET['email'];
print_r($mail);
echo"$count";
if($count>0)
{
echo json_encode('false');
}
else
{
echo json_encode('true');
}
?>
尝试过的事情
print_r($mail) 和 echo"$count";两者都返回正确的值。我也尝试过
echo json_encode(true);
还有
return true;
编辑
我尝试了更多的东西。
echo true;
我也尝试过直接通过 url 传递电子邮件的值,如果该值没有被传递给 'emailcheck.php' 这样做的可能性很小
email: {
required: true,
email: true,
remote:"emailcheck.php?email=test@test.com"
},
但我的表单仍然不起作用。
感谢您对我的问题的任何见解。
谢谢!
【问题讨论】:
-
而不是使用 json_encode 只是尝试回显真或假。
-
@aneesh 我已经尝试过你的建议 aneesh,但它不起作用。我输入了一个已经存在于数据库中的电子邮件 btu 没有显示任何消息,同样在按下提交按钮后,什么也没发生,我无法提交表单。
-
请检查您的萤火虫控制台是否有任何 javascript 错误
标签: php validation jquery jquery-plugins