jQuery Validate 远程方法:用户名验证故障排除
当使用 jQuery Validate 的远程方法检查数据库中是否存在用户名时,某些情况可能会导致不正确的错误消息。本文解决了一个常见问题,即尽管用户名不存在,但仍显示错误消息“此用户名已被占用”。
了解远程方法
远程方法允许您根据从服务器端脚本检索的数据验证字段。它需要两个参数:
示例实现
在提供的代码中,以下内容jQuery 脚本验证用户名字段:
$("#signupForm").validate({ rules: { username: { required: true, minlength: 3, remote: "check-username.php" } }, messages: { username: { remote: "This username is already taken! Try another." } } });
check-username.php 脚本负责从 POST 请求中检索用户名并检查数据库中是否存在:
<?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $name = mysql_real_escape_string($_POST['username']); $check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'"); if (mysql_num_rows($check_for_username) > 0) { $output = true; } else { $output = false; } echo json_encode($output); ?>
解决问题
原始PHP脚本返回true表示用户名存在,但它也回显了结果,导致 jQuery Validate 显示错误消息。
更正后的 PHP 脚本如下:
<?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $request = $_REQUEST['username']; $query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'"); $result = mysql_num_rows($query); if ($result == 0) { $valid = 'true'; } else { $valid = 'false'; } echo $valid; ?>
仅返回布尔值 true 或 false在 PHP 脚本中,jQuery Validate 现在可以正确判断用户名是否存在。
以上是为什么我的 jQuery 验证远程方法显示错误的用户名可用性错误?的详细内容。更多信息请关注PHP中文网其他相关文章!