javascript - 如果用户名存在于同一页面上,使用 AJAX 和 PHP 来 "Alert"用户?

标签 javascript php jquery mysql ajax

我发现许多 AJAX 脚本可以实时检查用户名是否存在于 MySQL 数据库中。例如,如果不存在,大多数可能会显示绿色复选图像,如果已经存在,则显示红色 x。

我对这种形式的稍微不同的方法感兴趣。

用户填写 10 个问题的测验,然后被带到用户注册表。如果用户完成了测验,我只想将他们的答案插入数据库。

目前,如果用户输入已存在的用户名或电子邮件,他们将在下一页收到错误消息,并被告知返回后才发现表单已重置。

这就是为什么我希望在同一页面上验证所有信息。

单击提交按钮后,将调用一个 javascript 函数来验证一些事情,例如用户是否输入了出生日期、是否没有将表单留空、密码是否匹配等。

如果不满足任何条件,它将返回 false,以便表单移至下一页,除非所有函数都返回 true。

这是它的样子。

function checkForm() {

if (checkUser() && checkPassword() && checkMonth() && checkDay() && checkAddress() && checkYear()) {
    document.getElementById("quizForm").method="post";
    document.getElementById("quizForm").action="register.php";
}
else {
    return false;
}
}

我有兴趣创建一个用户名/电子邮件检查功能,该功能使用 ajax 访问搜索数据库的 php 页面,如果用户名/电子邮件存在于数据库中,则返回 true 或 false 给 javascript。

那样的话,我可以只使用旧的 javascript 警报来说明用户名/电子邮件是否存在,然后返回 false,这样表单就不会提交。

这是我如何为此编写函数的示例:

function checkPassword() {
var pass1 = document.getElementById("pass").value;
var pass2 = document.getElementById("c_pass").value;
var pass1l = pass1.length;

if (pass1l < 5) {
    alert("Please create a password that is longer than 5 characters.");
    return false;
}
else {
    if (pass1 != pass2) {   
        alert("Your passwords do not match.");
        return false;
}
    else {
        return true;
    }
}

}

任何人都可以为此指出正确的方向吗?我一直在四处搜索,但没有找到任何特定的内容。

谢谢。

最佳答案

您可以在 <input> 的更改事件上发布 AJAX用户输入用户名的地方。考虑下面我快速组合的例子。它假定您有数据库表 users带列 idusername .它还假定您有一个文件 check.php使用变量 $mysqli 中的 MySQLi 连接连接到此数据库表.当输入改变时,它会调用check.php ,唯一的数据是输入的用户名。根据响应,它将更新 <span id="info"> .

HTML:

<input id="username" type="text" /><span id="info">Exists/Does not exist</span>

Javascript(jQuery):

$(function() {

        $("#username").on("change", function() {

            var data = "user="+$("#username").val();

            $.ajax({
                type: 'POST',
                url: 'check.php',
                data: data,
                dataType: 'json',
                success: function(r)
                {
                    if(r=="1")
                    {
                        //Exists
                        $("#info").html("Username already exists");
                    }else{
                        //Doesn't exist
                        $("#info").html("Username available!");   
                    }
                }
            });

        });

});

PHP(检查.php):

$user = $_POST['user'];

    if($stmt = $mysqli->prepare("SELECT id FROM users WHERE username = ?"))
    {
        $stmt->bind_param('s', $user);
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($id);
        $stmt->fetch();
        if($stmt->num_rows>0)
        {
            echo "1";
        }else{
            echo "0";   
        }
    }

我在我当前的项目中使用了类似的功能,并且运行良好。特别是对于本地文件,响应时间得到了改进!

(为拼写错误保留,当时很匆忙)

希望这对您有所帮助。

关于javascript - 如果用户名存在于同一页面上,使用 AJAX 和 PHP 来 "Alert"用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23791773/

相关文章:

javascript - 多个表单,多个提交按钮,1个使用ajax处理表单

javascript - 与 Electron 生成器的文件关联

javascript - 如何匹配多个序列

javascript - 自定义build设置所需的 webpack vue.js 热重载配置

php - 如何在 PHP 中的 foreach 第一次迭代中只回显 CSS 类一次?

php - WordPress 登录系统(带循环?)

javascript - 忽略 HREF/页面/部分

javascript - 如果背景图像 url = 那么

jquery - 3D 变换效果在 Firefox 和 Internet Explorer 中不起作用

javascript - 硬币 slider : $ is not defined