2014-07-08 31 views
-5

奧凱傢伙使用AJAX,我使用AJAX來驗證用戶名的availiblity有一定的問題,這是我笨代碼:檢查用戶名或密碼可用性上笨

VIEW 一個。表格

<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> 

b。腳本

<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;} 

CONTROLLERS

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>'; 
    } 

的問題是在形式總是表明用戶名可用。 請幫忙.. :)

回答

0

您從jQuery的傳遞usernameusername: $('#userId').val()沒有userId

嘗試從jQuery的與$this->input->post('username')

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

或更改下列發佈的數據指標:usernameuserId

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

1:當我的用戶名是''; DELETE FROM table_user;'「會發生什麼?您的查詢就會變成:

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:你一定要明白你正在檢查用戶ID針對用戶NAME吧?