Автозаполнение jQuery в Codeigniter

Я хочу создать окно поиска с автозаполнением, в котором результат запроса зависит от двух входов: 1. значение самого окна поиска (по вводу пользователя) 2. выбранное значение раскрывающегося списка

Вы можете увидеть детали из кодов ниже. Моя проблема заключается в источнике функции автозаполнения. Как я могу добавить параметр к URL-адресу? Я пытался использовать конкатенацию строк, например

source: '<?php echo site_url("crowd/get_POIs?cat=");?>'+'some value'+'&q='+'some value'

но это не сработало.

HTML:

<select name="selCat">
    <option>....</option>
</select>

<input class="col-3" type="text" id="searchPOI" name="searchPOI" />

Javascript:

$("#searchPOI").autocomplete({

    source: '<?php echo site_url("crowd/get_POIs");?>'
  });

Контроллер

function get_POIs(){
            //alert($_GET['term']);
            if (isset($_GET['cat']) && isset($_GET['q'])){;
                $cat = strtolower($_GET['cat']);
                $q = strtolower($_GET['q']);
                $this->crowd->get_POIs($cat,$q);
            }
}

Модель

function get_POIs($cat, $q){
        $this->db->select('title, contentid');
        $this->db->from('attraction');
        $this->db->where('cat3 = "'.$cat.'"');
        $this->db->like('title', $q);
        $query = $this->db->get();

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

            echo json_encode($row_set); //format the array into json data
        }
}   

person Priska Aprilia    schedule 03.09.2015    source источник


Ответы (1)


Вы можете использовать свой параметр, используя метод get, используя ajax

 $("#searchPOI").autocomplete({
        source: function(request, response) {
            $.ajax({url: <?php echo site_url("crowd/get_POIs") ?>,
                data: {cat: "some value", q: "some value"},
                dataType: "json",
                type: "GET",
                success: function(data) {
                    response(data);
                }
            });
        }
    });

Вам нужно исправить свой запрос и вернуть данные с вашего контроллера

Контроллер

function get_POIs(){
            //alert($_GET['term']);
            if (isset($_GET['cat']) && isset($_GET['q'])){;
                $cat = strtolower($_GET['cat']);
                $q = strtolower($_GET['q']);
                $data=$this->crowd->get_POIs($cat,$q);
                echo $data;
            }
}

Модели

function get_POIs($cat, $q){
        $this->db->select('title, contentid');
        $this->db->from('attraction');
        $this->db->where('cat3',$cat);
        $this->db->like('title', $q);
        $query = $this->db->get();

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

            return json_encode($row_set); //format the array into json data
        }
}   
person Saty    schedule 03.09.2015
comment
как я могу проверить, попадает ли он в контроллер или нет? Я попробовал ваше предложение, ошибки нет, но ничего не происходит. Я тоже пытался предупредить что-то в контроллере, но все равно ничего не происходит - person Priska Aprilia; 03.09.2015
comment
Я проверил консоль, прежде чем комментировать, она была и так понятна - person Priska Aprilia; 03.09.2015
comment
в любом случае параметр URL требует кавычек - person Priska Aprilia; 03.09.2015
comment
да, вы можете передать параметр URL в кавычках, и если он определен, то кавычки не нужны - person Saty; 03.09.2015
comment
Теперь я вижу некоторые значения, на которые отвечает ajax в инструментах разработчика. Но это все еще не может быть отображено в текстовом поле. ничего не показано - person Priska Aprilia; 03.09.2015
comment
мне удалось решить проблему другим способом. Я вижу некоторые данные, на которые ответил ajax, но все еще не успешно отобразил данные в текстовом поле. - person Priska Aprilia; 03.09.2015