проверьте, существует ли почта в базе данных jquery + php

Hy Я пытаюсь проверить адрес электронной почты в регистрационной форме. Я хочу проверить, существует ли адрес в базе данных;

У меня есть следующая функция:

function validateEmailRepeat(){ // check if email exists in the database; var emailVal = $('#email').val(); // assuming this is a input text field $.post('check_email.php', {'email' : emailVal}, function(data) { if(data==1) { email.addClass("error"); emailInfo.text("Adress exists"); emailInfo.addClass("error"); dataExist=1; } else { email.removeClass("error"); emailInfo.text("Valid adress"); emailInfo.removeClass("error"); dataExist=0; } }); if(dataExist==1) return false; else return true; } 

check_email.php выглядит так:

 require_once('db.php'); if (isset($_POST['email'])){ $email=mysqli_real_escape_string($con,$_POST['email']); $sql = "SELECT * FROM users WHERE `username`='".$email."'"; $select=mysqli_query($con,$sql) or die("fail"); $row = mysqli_num_rows($select); if ($row >0) { echo 1; }else echo 0 ; } else echo "post error"; 

Я новичок в этом . Так что не будь жестким. заранее спасибо.

LE: Извините! я забыл вопрос … проблема в том, что моя функция возвращает true, если я определяю var dataExist вне формы формы $ .post, и если я позволю ей, как сейчас, в функции, которую я получаю, «dataExist не определен», ошибка и возвращает true

Le: PHP возвращает ожидаемые 1 и 0 так, как я хотел.

LE: похоже, определение

var dataExist = 0;

вне функции validateEmailRepeat() разрешила проблему.

если есть другой способ, более элегантный, пожалуйста, скажите мне, потому что это кажется мне немного глупым.

Проблема в том, что вы не можете вернуть значение в вызываемую функцию, потому что ajax работает асинхронно.

  function validateEmailRepeat(){ // check if email exists in the database; var emailVal = $('#email').val(); // assuming this is a input text field $.post('check_email.php', {'email' : emailVal}, function(data) { if(data==1){ email.addClass("error"); emailInfo.text("Adress exists"); emailInfo.addClass("error"); dataExist=1; }else{ email.removeClass("error"); emailInfo.text("Valid adress"); emailInfo.removeClass("error"); dataExist=0; } $('#some_input').val(dataExist); validateUserName(); }); } function validateUserName() { var input = $('#some_input').val(); if (input) { alert("This username is already taken");// whatever } else { // whatever } }; 

Вы сравниваете имя пользователя с адресом электронной почты. Так работает ваша БД?

$ sql = "SELECT * FROM users WHERE username = '". $ email. "'";

Уверен, у вас есть поле в вашей базе данных для самого электронного письма, иначе я предлагаю вам сделать это. Запрос должен выглядеть так:

 $sql = "SELECT * FROM users WHERE email = '".$email."'"; 

Без одинарных кавычек для столбца.