почему ajax не передает значение поля ввода в парсер php? - PullRequest
0 голосов
/ 09 июня 2018

Я создаю страницу регистрации учетной записи, которая сравнивает адрес электронной почты пользователя с базой данных, чтобы убедиться, что указанный пользователь не создает дубликат учетной записи.Использование ajax для сообщения о существовании электронной почты в БД.При вводе адреса электронной почты в форму я всегда получаю «электронная почта в порядке».Это означает, что он не существует в БД.Однако это неверно.Если я назначу электронное письмо как переменную в парсере php, например, $ email = "email@exists.com", то оно действительно сообщит правильный результат.Я предполагаю, что анализатор не получает значение из формы для добавления в запрос.Вы знаете, почему это не работает?

<input type="text" id="password" class="form-control" name="password" value="" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" placeholder="password" autocomplete="off" required />

Ajax:

    <script>
function ajax_post(){
    // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var url = "email_check.php";
    var fn = document.getElementById("firstname").value;
    var ln = document.getElementById("lastname").value;
  var e = document.getElementById("email").value;
  var pwd = document.getElementById("password").value;
    var vars = "firstname="+fn+"&lastname="+ln;
    hr.open("POST", url, true);
    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Access the onreadystatechange event for the XMLHttpRequest object
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
            var return_data = hr.responseText;
            document.getElementById("status").innerHTML = return_data;
        }
    }
    // Send the data to PHP now... and wait for response to update the status div
    hr.send(vars); // Actually execute the request
    document.getElementById("status").innerHTML = "processing...";
}
</script>

и анализатор:

<?php

include 'db.php';





$test= $_POST['email'];


  $sql="SELECT email FROM users where email = '$test' LIMIT 1";
   $result = mysqli_query($conn,$sql);

if(mysqli_num_rows($result) > 0)
{
echo 'email is in use.';
exit();

} else if(mysqli_num_rows($result) < 1){
echo 'email is ok';
  exit();
}


  ?>

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Вам необходимо отправить электронное письмо вашему парсеру, а не по имени / фамилии

var vars = "email="+e;
0 голосов
/ 09 июня 2018

Вы не добавили поле электронной почты в ваши переменные при отправке запроса, в этой строке:

var vars = "firstname="+fn+"&lastname="+ln;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...