jQuery Validate リモート メソッド: ユーザー名検証のトラブルシューティング
jQuery Validate のリモート メソッドを使用してデータベースにユーザー名が存在するかどうかを確認する場合、特定のシナリオ誤ったエラーメッセージが表示される可能性があります。この記事では、ユーザー名が存在しないにもかかわらず、「このユーザー名はすでに使用されています」というエラー メッセージが表示される一般的な問題について説明します。
リモート メソッドについて
リモート メソッドサーバー側スクリプトから取得したデータに対してフィールドを検証できます。 2 つのパラメータを取ります:
実装例
提供されているこのコードでは、次の 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; ?>
By return Only PHP スクリプト内のブール値 true または false により、jQuery Validate でユーザー名が存在するかどうかを正しく判断できるようになりました。
以上がjQuery Validate リモート メソッドで間違ったユーザー名の可用性エラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。