在codeigniter中使用ajax检查用户名是否唯一

时间:2017-03-19 07:36:40

标签: jquery ajax codeigniter

直截了当。 我正在检查我输入的用户名是否存在于数据库中。所以我决定使用ajax。

预期的结果就像当我输入已经存在的用户名然后div样式得到更改并且错误消息出现在它下面但是这不是现在我不知道为什么?

我不熟悉ajax,所以你看到任何语法缺失或任何错误的技术,你可以指出它。

这是我的控制器功能:

function check_userName_exists()
{
    $user_name = $this->input->post('user_name');
    log_message('debug', 'Posted Username by Ajax for Check it exist or not : '. print_r($user_name, TRUE));

    $exists = $this->student_db->check_user_name($user_name);

    log_message('debug', 'Username Exist or not Response array: '. print_r($exists, TRUE));

    $count = count($exists);
    // echo $count 
    log_message('debug', 'Username Exist or not Response Count: '. print_r($count, TRUE));

    if ($count == 1) {
        $data['unique'] = 1;
        print(json_encode($data));
    } else {
        $data['unique'] = 0;
        print(json_encode($data));
    }
}

这是我的模特功能:

function check_user_name($user_name)
{

    $this->db->select('user_name'); 
    $this->db->from('user');
    $this->db->where('user_name', $user_name);
    $query = $this->db->get();
    $query_last = $this->db->last_query();
    log_message('debug', 'Find UserName is Unique Or Not Query: '. print_r($query_last, TRUE));
    $result = $query->result_array();
    log_message('debug', 'Find UserName is Unique Or Not Result: '. print_r($result, TRUE));
    return $result;
}

这是Ajax脚本:

<script type="text/javascript">
function check_if_exists() {

var user_name = $("#user_name").val();
// console.log(user_name);

$.ajax({
  type:'POST',
  url: "<?php echo site_url('student/check_userName_exists'); ?>",
  data:{ 'user_name':user_name},
  success:function(response)
  {

    if (response.unique = 1) 
    {
      // alert(success);
      //console.log(response);
      $("#userNameDiv").addClass("has-warning");
      $("#user_name").addClass("form-control-danger");
      $("#userNameErrorMsg").text("This User Name Is Already Takken. Please Try Something Else.");
    }
    else 
    {


      $("#userNameDiv").removeClass("has-warning");
      $("#user_name").removeClass("form-control-danger");      
      $('#userNameErrorMsg').text('');
    }    
  }
});

};

这是我的HTML:

<div class="form-group" id="userNameDiv">                    
                <input type="text" class="form-control form-control-success" name="user_name" required id="user_name" placeholder="Enter Username" onblur="check_if_exists();">
                <small class="text-help" id="userNameErrorMsg"></small>
              </div>
  

在控制台中得到空白回复。

2 个答案:

答案 0 :(得分:2)

你的控制器功能总是返回0.计数返回一个整数,你要检查它是否为空......更新下面的控制器代码来修复它。

Ajax期望json响应不是单个值。

在您的控制器中打印返回值,不要将其返回。

if ($count > 0) {
    $data['unique'] = 1;
    print(json_encode($data));
} else {
    $data['unique'] = 0;
    print(json_encode($data));
}

然后在你的ajax函数中

if (response.unique == '1') 

答案 1 :(得分:0)

返回赢了在这里工作,只是回应你的回应

if (empty($count)) {
    echo '1';
} else {
    echo '0';
}

还检查来自服务器的任何响应

success:function(response)
{
   console.log(response); // at beginning  

   // your code

 }