Я смотрю вокруг, и я все еще не могу понять, почему моя проверка имени пользователя не работает. Я просто хочу проверить, существует ли имя пользователя и отображается ли сообщение об ошибке. Вот правила для моего поля имени пользователя.
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;
Обратите внимание на исходный код:
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 вместо", чтобы отобразить его как сообщение об ошибке.