Reputation: 159
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
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
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