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 ?

Pourquoi ma méthode à distance de validation jQuery affiche-t-elle une erreur de disponibilité du nom d'utilisateur incorrect ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-23 15:10:18192parcourir

Why Does My jQuery Validate Remote Method Show the Wrong Username Availability Error?

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 :

  • url : L'URL du script qui effectuera la validation
  • type : La méthode de requête HTTP (généralement GET ou POST)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn