Я пытаюсь создать страницу регистрации с помощью jquery и php, где пользователь вводит свое имя пользователя, а когда он вставляет в текстовое поле свое имя пользователя, мой сайт проверяет немедленно, если он доступен или нет, и покажите! Но мой код не работает. Вот мой JS код:Живое имя пользователя Проверка не работает
$(".r74re").keyup(function (e){
var user_name = $(this).val();
if(user_name.length >= 4)
$.post('liveusername.php', {'username':user_name}, function(data) {
$('.step1 input.usrname:focus').css({
'background': '#fff url("images/loader.gif") 275px no-repeat',
'background-size':'10px 20px'
});
setTimeout(function(){
if(data.success){
console.log("in positive " + data);
$('.step1 input.usrname:focus').css({
'background-color': 'lightgreen',
'background-size':''
});
}else{
console.log("in negative " + data);
$('.step1 input.usrname:focus').css({
'background-color': 'red',
'background-size':''
});
}
}, 1000);
});
Вот мой PHP код, который $.Post
вызов, когда KeyUp событие:
include ("dbcon.php");
include ("funchuge.php");
if(isset($_POST["username"]))
{
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
//sleep(1);// for animating
if(strlen($_POST["username"]) > 3){
selfValidator($_POST["username"]);
$username = filter_var($_POST["username"], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);
$statement = $conn->prepare("SELECT username FROM users WHERE username=:usname");
$statement->bindparam(':usname', $username);
$statement->execute();
if($statement->fetch()){
$message = "ItExists";
echo json_encode(['success' => true, 'messages' => $message]);
}else{
$message = "NotExists";
echo json_encode(['success' => false, 'messages' => $message]);
}
}
}
Я испытываю много, и я нашел проблему в JS кода в строке if(data.success)
это условие не работает. Он всегда показывает мне другое условие, если пользователь вообще существует. Я не знаю, почему это происходит? Кто-то может помочь мне узнать мою проблему.
Я новичок в информатике, у меня нет хорошего опыта, чтобы задать хороший вопрос, я уже в опасной зоне, надеюсь, что я объясню свой вопрос хорошо. –
Попробуйте вывести 'data', а не' data.success'. – Script47
@ Script47 - Ему нужно использовать 'data.success', но' data' является строкой. –