【问题标题】:Live email availability check实时电子邮件可用性检查
【发布时间】:2013-03-26 21:30:43
【问题描述】:

我正在尝试使用 ajax 进行实时电子邮件可用性检查。我想获取输入值并将其发送到 php,在那里将检查它是否在数据库中,但我无法做到。当我使用 Firebug 测试脚本时,会有响应,但无论电子邮件是否存在,输出总是相同的。它总是向我展示不存在的东西。

该表称为公司。电子邮件的表格字段是电子邮件。

与数据库的连接正常。我认为问题出在我的 ajax 代码中,因为它总是给我“TAKEN”输出。

这是我的 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 = 'password';
$dbDatabase = 'php_test';

$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.");

$result = mysql_query("select Email from company where Email='".$email."'")
 or die(mysql_error());

if(mysql_num_rows($result))
{
echo 'NOT OK';
}
else
{
echo 'OK';
}
}
?>

这是ajax代码

$(document).ready(function() {

$("#email").blur(function(){
    $.ajax({  
    type: "POST",  
    url: "unique_check.php",  
    data: {Email: $("#email").val()},
    dataType:"json", 
    success: function(msg){

        if(msg == "OK"){
            alert("FREE")
        }else{
            alert("TAKEN")
        }
    }
    });
});    
}); 

请告诉我我的错误在哪里,或者如果有更好的方法,请告诉我。请记住,我是 ajax 和 php 的新手。非常感谢!

【问题讨论】:

    标签: php mysql ajax


    【解决方案1】:

    我想你想要:

    if($result != false && mysql_num_rows($result) > 0) {
    echo 'NOT OK';
    } else {
    echo 'OK';
    }
    

    如果这不起作用,请尝试回显您的查询以确保它是您想要的。

    【讨论】:

    • 现在我看到 ajax 甚至没有获取电子邮件输入的值。我认为问题出在 ajax 上。
    【解决方案2】:

    一个问题是,在您的 Javascript 代码中,您在页面加载时设置了 email,而这恰好是空的。您需要在 .blur() 函数中再次设置 email 以在字段实际模糊时获取值。

    $(document).ready(function() {
    
        $("#email").blur(function(){
        var email = $("#email").val();
            $.ajax({  
                type: "POST",  
                url: "unique_check.php",  
                data: {Email: email},
                dataType:"json", 
                success: function(msg){
    
                    if(msg == "OK"){
                        alert("FREE")
                    }else{
                        alert("TAKEN")
                    }
                }
            });
        });    
    }); 
    

    【讨论】:

    • 不幸的是,它不再工作了。使用萤火虫,我可以看到电子邮件输入的值没有被采用,我无法弄清楚原因。我整天都在做这个!
    • 将您的 PHP 代码更改为简单的 echo $_POST['email'];,然后使用您的 javascript alert(msg) 来查看服务器获得的价值。
    • 无论我写什么警报都是空的?问题出在哪里?
    • 其实我修好了。我更改了这一行数据:{Email:email},数据:“Email=" + $("#email").val(),谢谢你的帮助,蒂姆! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多