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));

现在它工作得很好。