提问者:小点点

PHP Ajax没有响应


在用户名可用性检查中,我创建了两个页面:register.php和registerControl.php,对其进行控制。 我检查数据库连接是否正常。 以前在一个php页面上创建的所有内容(所有语句,insertin data into db)。 但是当ajax验证其他输入时,它会复制html内容并显示其中的错误,而不是在单个html元素中显示错误消息。

所以我把它分成两个页面,但是现在ajax没有显示任何错误并响应。 以下是我的作品:

RegisterControl.php

<?php

require('../includes/config.php');


if(isset($_POST['username'])){
    //username validation
    $username = $_POST['username'];

    if (! $user->isValidUsername($username)){
        $infoun[] = 'Your username must be at least 6 alphanumeric characters';
    } else {
        $stmt = $db->prepare('SELECT username FROM members WHERE username = :username');
        $stmt->execute(array(':username' => $username));
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        if (! empty($row['username'])){
            $errorun[] = 'This username already in use';
        }
    }
}

?>

register.php

<script type="text/javascript">
    $(document).ready(function(){
        
        $("#username").keyup(function(event){
        event.preventDefault();
        var username = $(this).val().trim();
        if(username.length >= 3){
            $.ajax({
                url: 'registercontrol.php',
                type: 'POST',
                data: {username:username},
                success: function(response){
                // Show response
                $("#uname_response").html(response);
                }
            });
        }else{
            $("#uname_response").html("");
        }

        });     

    });
</script>

<form id="register-form" class="user" role="form" method="post" action="registercontrol.php" autocomplete="off">

<input type="text" name="username" id="username" class="form-control form-control-user" placeholder="Username" value="<?php if(isset($error)){ echo htmlspecialchars($_POST['username'], ENT_QUOTES); } ?>" tabindex="2" required>

<div id="uname_response" ></div>

</form>

共2个答案

匿名用户

我们需要在RegisterControl.php中打印响应,这样我们就可以在您的Register.php中获得响应。

按以下方式更改代码

<?php

require('../includes/config.php');


if(isset($_POST['username'])){
    //username validation
    $username = $_POST['username'];

    if (! $user->isValidUsername($username)){
       echo 'Your username must be at least 6 alphanumeric characters';
    } else {
        $stmt = $db->prepare('SELECT username FROM members WHERE username = :username');
        $stmt->execute(array(':username' => $username));
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        if (! empty($row['username'])){
            echo 'This username already in use';
        }
    }
}

?>

匿名用户

您需要从RegisterControl.php返回或回显一些内容。

<?php

require('../includes/config.php');


if(isset($_POST['username'])){
    //username validation
    $username = $_POST['username'];

    if (! $user->isValidUsername($username)){
        $infoun[] = 'Your username must be at least 6 alphanumeric characters';
    echo json_encode($infoun);
    exit;
       
    } else {
        $stmt = $db->prepare('SELECT username FROM members WHERE username = :username');
        $stmt->execute(array(':username' => $username));
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        if (! empty($row['username'])){
            $errorun[] = 'This username already in use';
            echo json_encode($errorun);
            exit;
        }
        echo $row[username];
        exit;
    }
}

?>