javascript - 如何使用ajax检查数据库中是否已存在电子邮件?

标签 javascript php jquery ajax

我正在寻找获取ajax响应的代码,以检查电子邮件地址是否已输入到数据库中。这是我的代码片段。

Java 脚本:

<script type="text/javascript">
pic1 = new Image(16, 16);
pic1.src="img/loader.gif";

$(document).ready(function(){

$("#email").change(function() {

var usr = $("#email").val();

if(usr.length >= 4)
{
$("#status").html('<img style="width:17px;" src="img/loader.gif" align="absmiddle">&nbsp;Checking availability...');

    $.ajax({ 
    type: "POST", 
    url: "check.php", 
    data: "email="+ usr, 
    success: function(msg){ 

   $("#status").ajaxComplete(function(event, request, settings){

    if(msg == 'OK')

    {
     alert ("error");

        $("#email").removeClass('object_error'); // if necessary
        $("#email").addClass("object_ok");
        $(this).html('&nbsp;<img src="tick.gif" align="absmiddle">');
    } 
    else 
    { 
        $("#email").removeClass('object_ok'); // if necessary
        $("#email").addClass("object_error");
        $(this).html(msg);
    } 

   });

 }

  });

}
else
    {
    $("#status").html('<font color="red">' +
'Enter Valid Email</font>');
    $("#email").removeClass('object_ok'); // if necessary
    $("#email").addClass("object_error");
    }

});

});
</script>

我的Check.php文件如下

<?php
// This is a sample code in case you wish to check the username from a mysql db table

if(isSet($_POST['email'])) {
$email = $_POST['email'];

$dbHost = 'localhost'; // usually localhost
$dbUsername = 'root';
$dbPassword = '';
$dbDatabase = 'jaquar_cdb';

$db = mysql_connect($dbHost, $dbUsername, $dbPassword)
 or die ("Unable to connect to Database Server.");
mysql_select_db ($dbDatabase, $db)
 or die ("Could not select database.");

$sql_check = mysql_query("select email from jaquar_contest where email='".$email."'")
 or die(mysql_error());

if(mysql_num_rows($sql_check)) {
    echo '<font color="red">The email <strong>'.$email.'</strong>'.
' is already in use.</font>';
} else {
    echo 'OK';
}
}
?>

最后是 HTML 代码

<div class="sf_columns column_3">                     
 <input id="email" type="text" placeholder="Email" name="email" data-required="true" data-email="true">
 <div style="left:0px;  padding-top: 10px;" id="status"></div>
</div>

问题是,我没有得到任何回应..我的错误是什么?请帮助我..

最佳答案

为什么没有得到任何响应的问题是 AjaxComplete function

$("#status").ajaxComplete(function(event, request, settings)

我不确定你为什么要使用它,但你可以不使用它,事实上,即使你的方法没有必要

没有Ajaxcomplete功能对代码进行了一些更改。

pic1 = new Image(16, 16);
pic1.src="img/loader.gif";
$(document).ready(function(){
    $("#email").change(function() {
    var usr = $("#email").val();
    if(usr.length >= 4){
        $("#status").html('<img style="width:17px;" src="img/loader.gif" align="absmiddle">&nbsp;Checking availability...');
        $.ajax({ 
        type: "POST", 
        url: "check.php", 
        data: "email="+ usr,
        dataType: 'text',
            success: function(msg){
                if(msg == 'OK'){
                 alert ("success");
                    $("#email").removeClass('object_error'); // if necessary
                    $("#email").addClass("object_ok");
                    $("#status").html('&nbsp;<img src="tick.gif" align="absmiddle">');
                } else {
                    alert ("error");
                   $("#email").removeClass('object_ok'); // if necessary
                   $("#email").addClass("object_error");
                   $("#status").html(msg);
               }
            }

        });
    } else {
        $("#status").html('<font color="red">' + 'Enter Valid Email</font>');
        $("#email").removeClass('object_ok'); // if necessary
        $("#email").addClass("object_error");
    }
    });
});

旁注:mysql_* functions已弃用,因此应停止使用它并开始使用 MySQLi

<?php
// This is a sample code in case you wish to check the username from a mysql db table
if(isset($_POST['email'])) { //change isSet to isset (it will not make any difference)
    $email = mysql_real_escape_string($_POST['email']); //escape the string

    $dbHost = 'localhost'; // usually localhost
    $dbUsername = 'root';
    $dbPassword = '';
    $dbDatabase = 'jaquar_cdb';
    $db = mysql_connect($dbHost, $dbUsername, $dbPassword)
        or die ("Unable to connect to Database Server.");
    mysql_select_db ($dbDatabase, $db)
        or die ("Could not select database.");

    $sql_check = mysql_query("SELECT email FROM jaquar_contest WHERE email='$email'") or die(mysql_error());
        if(mysql_num_rows($sql_check) > 0) { //check rows greater then zero (although it will also not make any difference)
            echo '<font color="red">The email <strong>'.$email.'</strong>'. ' is already in use.</font>';
        } else {
            echo 'OK';
        }
}
?>

关于javascript - 如何使用ajax检查数据库中是否已存在电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924271/

相关文章:

javascript - 如何从 MongoDB 集合中创建并行和顺序作业队列(FIFO)?

javascript - 如果我有特定选项卡的 tabId,如何获取该选项卡的窗口对象?

jQuery Lightbox 或具有图像数组的等效项

jquery - Asp.net:带有 Jquery slider 问题的 Repeater

javascript - 查询 :contain selector exclude some div from conditions

javascript - 如何获取 http GET 请求中不断变化的值?

php - 如何在 HH :MM format 中的 php 中添加多个小时

php - 重复插入/更新时时间戳为全零

php - 在 Blade 中使用 subDays() 后 URL 不会改变 - Laravel

javascript - 在 Promise.all 中 react setState