AJAX插入用于用户名检查的数据,导致重复的div元素且没有数据

时间:2018-12-27 21:14:58

标签: php jquery ajax

下面的代码应该检查在提交表单之前是否已经使用了用户名。但是,一旦在输入中输入名称,就会重复div元素,并且不会输出数据。有人可以使用AJAX来解决此问题吗?

php代码:

if (isset($_POST['check_username'])) {
    $user_login_name = $_POST['check_username'];

    $sql = "SELECT user_login_name FROM users;";
    $result = mysqli_query($conn, $sql);
    $rows = mysqli_fetch_array($result);

    if (!empty($user_login_name)) {
        foreach ($rows as $row) {
            if (strpos($row, $user_login_name) != false) {
                echo $row;
                echo "<br>";
            }
        }
    } else {
        echo "Database empty!";
    }
}

html代码:

<div class="register">
            <div class="band_1">
                <div class="box">
                    <form action="../server/register.php" method="POST">
                        <div class="input_table">                           
                            <table>
                                <thead>
                                    <tr>
                                        <th><h1>Register to LIMS</h1></th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td><input type="text" name="user_first_name" placeholder="Enter First Name"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="text" name="user_last_name" placeholder="Enter Last Name"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="text" name="user_phone" placeholder="Enter Contact Number"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="email" name="user_email" placeholder="Enter Email"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="text" name="user_login_name" placeholder="Select a Username"><p id="test"></p></td>
                                    </tr>
                                    <tr>
                                        <td><input type="password" name="user_password" placeholder="Select a Password"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="password" name="user_password_2" placeholder="Repeat Password"></td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                        <button type="submit" name="user_register" class="button_1">Register</button>
                        <button type="button" class="button_3">Cancel</button>              
                    </form>
                </div>
            </div>
        </div>

和AJAX:

$(document).ready(function() {

    $("input[name=user_login_name]").keyup(function(){
        var user_login_name = $("input[name=user_login_name]").val();
        $.post("../server/register.php", {
            check_username: user_login_name
        }, function(data, status) {
            $("#test").html(data);
        });

    });

});

2 个答案:

答案 0 :(得分:0)

似乎,只需改进php:

1)您需要检查用户的输入是否为空,2)仅选择匹配的对象,3)最后调用die

if (!empty($_POST['check_username'])) {
    $user_login_name = $_POST['check_username'];

    $sql = "SELECT user_login_name FROM users where user_login_name like '%$user_login_name%';";
    $result = mysqli_query($conn, $sql);
    $rows = mysqli_fetch_array($result);

    if ($rows) {
        foreach ($rows as $row) {
            echo "$row<br>";
        }
    } else {
        echo "Database empty!";
    }

    die;
}

更新。同样,最好致电:$rows = mysqli_fetch_array($result, MYSQLI_ASSOC);-防止两次检索额外的数据。

答案 1 :(得分:-1)

您的php代码具有更好的方法来检查数据库中是否存在用户。 只需检查查询中是否存在用户和号码,您无需使用php进行检查。

$.ajax({

});

还可以尝试连接数据:

d-sm-block

从php传递变量,您可以决定是否从javascript端显示数据。

我希望它可以帮助C: