jquery validate – remote始终返回true
我有一个表单,我正在使用jQuery validate插件。
我也使用远程来检查用户名和电子邮件是否可用,但我总是从脚本中得到错误。
这是jqueryvalidation部分:
$(document).ready(function () { $('#registration').validate({ rules: { email: { email: true, remote:{ url: "./php/checkemail.php", type: "POST", } }, username: { minlength: 4, maxlength: 16, remote: { url: "./php/checkusername.php", type: "POST", } }, messages: { email: { email: "Please enter a valid e-mail address.", remote: "This email is already registered.", }, username: { minlength: "Your username must be at least 4 characters long but less than 16", maxlength: "Your username must be at least 4 characters long but less than 16", remote: "This username is already registered.", }, submitHandler: function(form) { $('#registration').ajaxSubmit(); return false; }, }); });
这是checkemail.php文件:
$mysqli = mysqli_init(); if(isset($_POST['email'])) { $email = mysqli_real_escape_string(strtolower($_POST['email'])); $check= mysqli_query("SELECT * FROM users WHERE LOWER email = '$email'"); if(mysqli_stmt_num_rows($check)!=0) { echo json_encode(false); } else { echo json_encode(true); } }
谁能告诉我,我做错了什么以及如何解决它?
此外,即使我将脚本更改为发送给我,validation脚本中的远程消息也不会出现在我的表单上。
我认为远程函数正在检查字符串。
所以试试这个:
if(mysqli_stmt_num_rows($check)!=0) { echo 'false'; } else { echo 'true'; }
所以,问题是我使用的PHP已被弃用,当我将其更改为新版本时我做错了…所以正确的做法是:
如果(isset($ _ POST [ ‘电子邮件’]))
{
$ email = mysqli_real_escape_string($ link,$ _POST [’email’]);
$ check = mysqli_query($ link,“SELECT * FROM users WHERE email =’”。$ email。“’”)或die(mysqli_error($ link));
如果(mysqli_num_rows($检查)!= 0)
{
echo 'false';
}其他{
echo 'true';
}
}
mysqli_close($链接);
?>
其中$ link是与mysql数据库的连接:
$ link = mysqli_connect(“$ db_host”,“$ db_username”,“$ db_password”,“$ db_database”)或die(“Error”.mysqli_error($ link));
现在它工作得很好。