我正在使用JQuery Bassistance Form Validation插件,一切正常,直到我尝试检查MySQL数据库中的现有电子邮件。
这是我的代码:
$(document).ready(function(){
$('#signup').validate({
rules: {
email: {
required: true,
email: true,
remote: {
type: 'POST',
url: "email_check.php"
}//end remote
}//end email
},//end rules
messages: {
email: {
remote: "Email already in use."
}//end email
} //end messages
}); //end validate
}); //end ready
这是我的email_check.php文件:
<? php
$dbc = mysqli_connect('localhost', 'root', '', 'step1_db')
or die('Error connecting to the database');
$email = $_GET['email'];
$check_email = "SELECT * FROM users WHERE email = '$email'";
$existing = mysqli_query($dbc, $check_email);
$num_rows = $existing->num_rows;
if ($num_rows == 1){
echo json_encode(FALSE);
}else{
echo json_encode(TRUE);
}
mysqli_close($dbc);
?>
现在,如果我尝试将数据库中存在的电子邮件输入到我的表单中,我会收到无效电子邮件的默认错误消息,而不是“已使用的电子邮件”。即使我输入了数据库中不存在的有效电子邮件,错误消息也不会消失。
我猜这个问题出现在我的php文件中......我尝试过使用'return true'和'return false'但是它们也没有用。我改变了我的代码以回答json_encode(FALSE)从与此类似的主题的答案。 是否有人能够指出这里发生的事情?
答案 0 :(得分:1)
通过$ .ajax(XMLHttpRequest)调用服务器端资源并获取 键/值对,对应于经过验证的元素的名称 及其作为GET参数的值。响应被评估为JSON 并且对于有效元素必须为true,并且可以是任何false,undefined 对于无效元素,使用默认消息为null;或一个字符串, 例如。 “该名称已被采用,请尝试使用peter123”以显示为 错误信息。
看起来好像你正确回应了。看起来您的文件路径是错误的,因为您在控制台中收到404错误。 FIx路径和其他看起来很好。
答案 1 :(得分:1)
您的php文件的电子邮件变量设置为GET,而远程验证功能设置为POST,更改其中一个以匹配,您应该设置