在Codeigniter上使用AJAX检查用户名或密码可用性

时间:2014-07-08 07:53:13

标签: php jquery ajax codeigniter

Oke伙计们,我在使用AJAX来验证用户名的可用性方面遇到了一些问题,这是我在codeigniter中的代码:

查看 一个。表格

<input type="text" class="form-control" placeholder="New Username" name="userId" id="userId" value="" onblur="return check_username();">
<div id="Info"></div></span><span id="Loading"><img src="<?php echo base_url(); ?>assets/img/loading.gif" alt="" /></span>

湾脚本

<script src="<?php echo base_url(); ?>assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
        $(document).ready(function() {
        $('#Loading').hide();    
            });

        function check_username(){

        var username = $("#userId").val();
            if(username.length > 2){
            $('#Loading').show();
            $.post("<?php echo base_url(); ?>admin/check_username_availablity", {
                username: $('#userId').val(),
                }, function(response){
            $('#Info').fadeOut();
            $('#Loading').hide();
        setTimeout("finishAjax('Info', '"+escape(response)+"')", 450);
            });
        return false;
        }
    }

function finishAjax(id, response){

  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn(1000);
} 
</script>

模态

public function check_username_availablity(){
        $username = trim($this->input->post('userId'));
        $username = strtolower($username);  

        $query = $this->db->query("SELECT * FROM table_user WHERE userId='$username'");
        if($query->num_rows() > 0)
            return false;
        else
            return true;}

控制器

public function check_username_availablity(){
      $this->load->model('m_admin');
      $get_result = $this->m_admin->check_username_availablity();

        if(!$get_result )
            echo '<span style="color:#f00">Username already in use. </span>';
        else
            echo '<span style="color:#00c">Username Available</span>';
    }

问题的形式始终显示用户名可用。 请帮助.. :))

2 个答案:

答案 0 :(得分:0)

1:当我的用户名为&#34;&#39;; DELETE FROM table_user;&#39;&#34; ?您的查询将变为:

SELECT * FROM table_user WHERE userId = '';DELETE FROM table_user;''

因此,让我们解决一下:(并请:阅读翻阅手册)

$this->db->query('SELECT * FROM table_user WHERE userId = ?',array($username));

2:不要在你的模型中放置业务逻辑:

function check_username_availability($username)
{
    // also the name of this function could better describe what it does:
    // is_username_available($username) for instance.
    // ...
}

3:选择用户的查询输出是什么?您尝试调试了什么?

die(var_dump($this->db->last_query()));

4:您确实意识到您正在针对用户 NAME 检查用户 ID 吗?

答案 1 :(得分:0)

您通过username而不是username: $('#userId').val()

从jQuery传递了userId

请尝试使用$this->input->post('username')

$username = strtolower(trim($this->input->post('username')));

或者从jQuery更改发布的数据索引:usernameuserId

userId: $('#userId').val()