Проверка имени пользователя удаленной проверки JQuery

0

Я смотрю вокруг, и я все еще не могу понять, почему моя проверка имени пользователя не работает. Я просто хочу проверить, существует ли имя пользователя и отображается ли сообщение об ошибке. Вот правила для моего поля имени пользователя.

username:
        {
            required: true,
            remote: "user-check.php"
        },

Вот часть сообщения.

username:
        {
            required: 'Please enter a username',
            remote: 'Username is taken'
        },

Мой файл user-check.php выглядит так.

if(isset($_GET['username']) {
$user = $_GET['username'];

$query = $pdo->prepare('SELECT * FROM clients WHERE client_username = ?');

$query->bindValue(1, $user);

$query->execute();

$usercheck = $query->rowCount();

if($usercheck < 1) {
    $valid = "false"; //    <---yes, Validate is expecting a string
} else {
    $valid = "true"; //    <---yes, Validate is expecting a string
}
echo json_encode($valid);

}

Любая обратная связь была бы потрясающе заставляла меня сходить с ума. PS Я новичок в публикации здесь, извините за формат.

ФИКСИРОВАННЫЙ и рабочий. Все ошибки, похоже, исходили от user-check.php. Это фиксированная версия.

header('Content-type: application/json');


$user = $_REQUEST['username'];

$query = $pdo->prepare('SELECT * FROM clients WHERE client_username = ?');

$query->bindValue(1, $user);

$query->execute();

$usercheck = $query->rowCount();

if($usercheck == 0) {
    $valid = 'true';
} else {
    $valid = 'false'; 
}
echo $valid;
Теги:
jquery-validate

1 ответ

0

Обратите внимание на исходный код:

if($usercheck < 1) {   // <-- if no database match
    $valid = "false";  // <-- false => "failed" validation
} else {
    $valid = "true";
}

Вы возвращаете false если в базе данных нет совпадений. Это просто назад. Если нет совпадения, вы должны вернуть true, что указывает, что поле "прошло" проверку.

Теперь обратите внимание на то, как логика меняется в вашей "фиксированной" версии:

if($usercheck == 0) {   // <-- if no database match
    $valid = 'true';    // <-- true => "passed" validation
} else {
    $valid = 'false'; 
}

Согласно jQuery Подтвердить документацию "удаленный метод":

Ответ оценивается как JSON и должен быть true для действительных элементов и может быть любым false, undefined или null для недопустимых элементов, используя сообщение по умолчанию; или строки, например. "Это имя уже принято, попробуйте peter123 вместо", чтобы отобразить его как сообщение об ошибке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню