javascript - ajax - 验证数据库中是否已存在行

标签 javascript php jquery ajax

我有一个简单的表单,用于将电子邮件地址提交到数据库。我想首先使用 javascript 和 AJAX 检查该电子邮件地址是否已存在于表中。无论该行是否已存在于数据库中,我使用的代码始终返回 true。有什么提示吗?

JS代码

<script> 
$('form').submit(function(e) 
{
  alert('submit intercepted');
  e.preventDefault(e);
  var u = $('#email').val();
  $.ajax({
      url: './test2.php',
      type: 'POST',
      data: u,
      success: function (response) {
      //get response from your php page (what you echo or print)
        $('#status').append('<p>The email is ok to use and the row has been inserted </p><p>' + response);
        console.log('Submitted');
      },
      error: function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus, errorThrown);
        alert('Email exists');
      }
    });
});
</script>

HTML 代码

<form id="form" action="./test2.php" method="post"> 
    E-mail: <input type="email" name="email" id="email" required><br>
    <span id="status">   </span>
    <input type="submit" id="btnsub">
  </form>

PHP 代码

if(isset($email)) {

  $sql_email_check = $conn->query("SELECT Email FROM test WHERE Email='$email' LIMIT 1") ;

  $email_check = $sql_email_check->num_rows;

  if ($email_check < 1) {

    //return "Available";
    return true;   
    //header('Location: /test.php');
    exit();

  } 
  else 
  {
    //return "Unavailable";
    return false;
    //header('Location: /test.php');
    exit(); 

  }
}

最佳答案

所以基本上问题是将答案从 php 代码返回到 ajax 函数。由于某种原因,返回值没有按照预期正确解释(无论如何,根据我的理解)

PHP 代码

if(isset($email)) {    
  $sql_email_check = $conn->query("SELECT Email FROM test WHERE Email='$email' LIMIT 1") ;     
  $email_check = $sql_email_check->num_rows;    

  if ($email_check == 0) {
    echo 'true';  
    return; 
    } 
  else 
  {
    echo 'false';
    return;    
  }
}

JS 代码

<script> 
$('form').submit(function(e) 
{
  alert('submit intercepted');
  e.preventDefault(e);
  var u = { 'email': $('#email').val() };
  $.ajax({
      url: 'test2.php',
      type: 'POST',
      //dataType: 'string',
      data: u,
      success: function (response) {
        //get response from your php page (what you echo or print)
        console.log(response);

        if (response === 'true') {
          $('#status').append('<p>The email is ok to use and the row has been inserted </p><p>' + response);

        } else {
          console.log('Email does exist ');

        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus, errorThrown);

      }
    });
});
</script>

关于javascript - ajax - 验证数据库中是否已存在行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46171095/

相关文章:

javascript - 如何为对象集合创建接口(interface)?

php - 我是否应该始终验证对象是否为 NULL?

PHP PDO 如何在我的用户列表旁边显示我正在关注谁?

javascript - 显示按钮 B 时仅显示按钮 A

jquery - 使用 jquery 添加 css 规则

php - 服务器即时创建文件供客户端保存

javascript - 为什么我总是得到 'false' 值?

javascript - JavaScript 新手 : how to avoid sending data that have not changed?

php - Yii2 插入同一张表的多条记录

jquery 验证,将消息放在输入框之前