2015-11-02 5 views
0

Я пытаюсь создать страницу регистрации с помощью 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) это условие не работает. Он всегда показывает мне другое условие, если пользователь вообще существует. Я не знаю, почему это происходит? Кто-то может помочь мне узнать мою проблему.

+0

Я новичок в информатике, у меня нет хорошего опыта, чтобы задать хороший вопрос, я уже в опасной зоне, надеюсь, что я объясню свой вопрос хорошо. –

+0

Попробуйте вывести 'data', а не' data.success'. – Script47

+0

@ Script47 - Ему нужно использовать 'data.success', но' data' является строкой. –

ответ

0

Вам нужно разобрать возвращаемую строку PHP в JSON, прежде чем вы сможете получить к ней доступ, как объект. Добавьте эту строку выше своего setTimeout.

data = JSON.parse(data); 
+0

эй босс, его работы. но еще один вопрос. parse не создаст проблем для атаки? если кто-то может вводить парсы ??? –

+1

Нет, 'parse' ориентирован на пользователя и на стороне клиента, поэтому ничто не возвращается к вашим данным. –

+0

ok для ответа сэр. –

 Смежные вопросы

  • Нет связанных вопросов^_^