Maison >développement back-end >tutoriel php >Pourquoi ma méthode à distance de validation jQuery affiche-t-elle une erreur de disponibilité du nom d'utilisateur incorrect ?
Méthode à distance jQuery Validate : dépannage de la vérification du nom d'utilisateur
Lors de l'utilisation de la méthode à distance de jQuery Validate pour vérifier si un nom d'utilisateur existe dans la base de données, certains scénarios peut conduire à des messages d’erreur incorrects. Cet article résout un problème courant où le message d'erreur « Ce nom d'utilisateur est déjà pris » s'affiche alors que le nom d'utilisateur n'existe pas.
Comprendre la méthode distante
La méthode distante vous permet de valider un champ par rapport aux données récupérées à partir d'un script côté serveur. Il prend deux paramètres :
Exemple d'implémentation
Dans le code fourni, le script jQuery suivant valide le nom d'utilisateur field:
$("#signupForm").validate({ rules: { username: { required: true, minlength: 3, remote: "check-username.php" } }, messages: { username: { remote: "This username is already taken! Try another." } } });
Le script check-username.php se charge de récupérer le nom d'utilisateur de la requête POST et de vérifier s'il existe dans la base de données :
<?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); ?>
Résolution le problème
Le script PHP d'origine a renvoyé true pour indiquer que le nom d'utilisateur existe, mais il a également fait écho au résultat, ce qui a provoqué la validation de jQuery pour afficher un faux message d'erreur.
Le script PHP corrigé est le suivant :
<?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; ?>
En renvoyant uniquement la valeur booléenne true ou false dans le script PHP, jQuery Validate peut désormais déterminer correctement si le nom d'utilisateur existe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!