Ajax 的用户名检查失败

username check with Ajax fails

我正在使用 Codeigniter 4 和 ajax 检查用户名是否存在。失败了。

这是我用来检查用户名的代码。 当用户输入用户名

时,我希望弹出窗口在输入框下方显示(可用不可用

AJAX

<script>
        $(document).ready(function() {
            $("#unameAkun").keyup(function() {
                var username = $(this).val().trim();
                if (username != '') {
                    $.ajax({
                        url: '<?php echo base_url('Dashboard_db/cek_username') ?>',
                        type: 'post',
                        data: {
                            username: username
                        },
                        success: function(response) {
                            $('#username_result').html(response);
                        }
                    });
                } else {
                    $("#username_result").html("");
                }
            });
        });
    </script>

型号

public function cek_username($email_akun){
    return $this->db->table('tabel_akun')->where(array('email_akun'=>$email_akun))->get()->getRowArray();}

控制器

public function cek_username() {
    if (isset($_POST['unameAkun'])) {
        $username = $_POST['unameAkun'];
        $results = $this->Akun_->cek_username($username);
        if ($results>0) {
            $response = "<span style='color: red;'>Not Available.</span>";
        } else {
            $response = "<span style='color: green;'>Available.</span>";
        }
    }
    echo $response;
}

现在您正在查询电子邮件而不是用户名,请将您的模型更改为:

public function cek_username($username){
    return $this->db ->table('tabel_akun')
                     ->where(array('unameAkun'=>$username))
                     ->get()
                     ->countAllResults;
}

如您所见,我还将 getRowArray() 更改为 countAllResults(),如您所愿 return 用户名存在的频率。

此外,我会在 javascript 部分使用 change 而不是 keyup,所以它只会检查,一旦你有完整的用户名(事件被推迟到元素丢失focus) 而不是每个字母,但这是可选的,如您所愿。