2015-05-12 2 views
0

Я разрабатываю небольшой веб-сайт, где мне нужно обрабатывать регистрацию пользователя. Как обычно, если пользователь запрашивает имя пользователя, которое уже используется, системе не разрешается продолжать регистрацию.AJAX мгновенная проверка с php и javascript

Я хочу проверить, что во время регистрации, как это делают большинство современных веб-сайтов. Как мне это сделать с помощью AJAX?

Регистрация Форма:

<div class="container"> 
     <form id="register_form" action="actions/register_action.php" method="post"> 

      <div class="form-group"> 
       <label for="name_area">Name</label> 
       <input type="text" name="name" class="form-control" placeholder="Name"> 
      </div> 
      <div class="form-group"> 
       <label for="username_area">Username</label> 
       <input type="text" name="username" class="form-control" id="username_id" placeholder="Username"> 
      </div> 
      <div class="form-group"> 
       <label for="email_area">Email</label> 
       <input type="email" name="email" class="form-control" placeholder="Email"> 
      </div> 
      <div class="form-group"> 
       <label for="pass_area">Password</label> 
       <input type="password" name="pass" class="form-control" placeholder="Password"> 
      </div> 
      <div class="form-group"> 
       <label for="conf_pass_area">Confirm password</label> 
       <input type="password" name="conf_pass_area" class="form-control" placeholder="Confirm password"> 
      </div> 
      <br> 
      <div class="form-group"> 
       <input type="submit" class="btn btn-primary" id="button_area" placeholder="Submit"> 
       <!--action to:register_action!--> 
      </div> 
     </div> 
    </form> 
    </div> 

users.php (где я делаю свою функцию PHP относительно пользователей):

<?php 
    //checks if username inserted is already in use 
    function check_username($username_pretended) { 
     global $conn; 

     $stmt = $conn->prepare('SELECT * FROM CommonUsers WHERE username=?'); 
     $stmt->execute(array($username_pretended)); 

     $res = $stmt->fetch(); 

     if($res['username'] == "") { 
      return false; 
     } 
     else return true; 
    } 

    //inserts an user in the database 
    function insertUser($name, $username, $email, $password) { 
     global $conn; 

     $stmt = $conn->prepare('INSERT INTO CommonUsers(name, username, email, password) VALUES (?, ?, ?, ?)'); 
     $stmt->execute(array($name, $username, $email, $password)); 
    } 
?> 
+0

Я не уверен, что вы просите. Какую часть «делать это с помощью ajax» у вас есть проблема? – Mike

+0

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

ответ

2

Из верхней части моей головы:

$("#username_id").on("change", function() 
{ 
    $.ajax(
    { 
     method: "get", // or maybe post? 
     url: "yoururlhere", 
     data: 
     { 
      username: $(this).val() 
     }, 
     success: function(data) 
     { 
      if (data == "0") 
      { 
       // Hide warning 
      } 
      else 
      { 
       // Warn user that username is already taken 
      } 
     } 
    }); 
}); 

Это самый простой способ сделать это. Его отправка имени пользователя на сервер для проверки. Конечно, вам понадобится элемент для отображения предупреждения (которого я не смог найти в DOM).

Подробные сведения можно найти в ajax() method docs.

В файле PHP:

$username = $_GET["username"]; 

if (check_username($username)) 
{ 
    return "1"; 
} 
else 
{ 
    return "0"; 
} 
+0

Так что я не смогу использовать свой php-файл? Я должен был бы создать новый, исключительно для обработки вызова AJAX? –

+1

@CarlosPereira Я могу использовать ваш php-файл, но вам нужно знать, что запрос был сделан для проверки только имени пользователя. И вы должны вызвать функцию 'check_username()' каким-то образом и вернуть значение в запрос. – DontVoteMeDown

+0

Я знаю это, так что проще иметь файл только для вызова ajax. Черт возьми, это убивает меня –

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