Atul Kumar
Atul Kumar

Reputation: 159

(Codeigniter-jquery ui) Autocomplete not working

My intension is to search users. But the autocomplete is not working for me. I would like some help on this.

Here are my codes,

HTML

<input id="user-input" type="text" name="users" placeholder="Search User" autocomplete="on">

Model

function get_user($user) {

    $this->db->select('name');
    $this->db->like('name', $user);
    $query = $this->db->get('users');

    // echo $query; die;

    if($query->num_rows() > 0){
        foreach($query->result_array() as $row) {
            $row_set[] = htmlentities(stripslashes($row['name']));
        }

        echo json_encode($row_set); 
    }

}

Controller

public function user_search() {

    $this->load->model('users_model');

    if (isset($_GET['term'])){
        $user = strtolower($_GET['term']);
        $this->users_model->get_user($user);
    }

}

Js

$(function(){
  $("#user-input").autocomplete({
    source: "site/user_search",
    minLength: 1
  });
});

I am using the jquery ui version 1.12

Upvotes: 0

Views: 1084

Answers (2)

AngularJMK
AngularJMK

Reputation: 1278

 Set label and value in json response key
 function user_search()
    {

        $user = $_GET['term'];

        $query = $this
                      ->db
                      ->select('name')
                      ->like('name',$user)
                      ->get('users');

         if($query->num_rows() > 0){
            foreach($query->result_array() as $row) {
                $new_row['label']=htmlentities(stripslashes($row['name']));
                $new_row['value']=htmlentities(stripslashes($row['name']));
                $row_set[] = $new_row; //build an array
            }

            echo json_encode($row_set); 
 }

Upvotes: 0

Geordy James
Geordy James

Reputation: 2408

Actually this work fine for me and for the sake of simplicity i removed the model.

In your view

    <script src="jquery-3.1.1.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
     <script>
     $(function(){
      $("#user-input").autocomplete({
        source: "<?php echo base_url('site/user_search'); ?>",
        minLength: 1
      });
    });
    </script> 
 <input id="user-input" type="text" name="users" placeholder="Search User" autocomplete="on">

In your Site Controller

    function user_search()
    {

        $user = $_GET['term'];

        $query = $this
                      ->db
                      ->select('name')
                      ->like('name',$user)
                      ->get('users');

         if($query->num_rows() > 0){
            foreach($query->result_array() as $row) {
                $row_set[] = htmlentities(stripslashes($row['name']));
            }

            echo json_encode($row_set); 
        }
   }

Upvotes: 2

Related Questions