Автозаполнение JQuery в codeigniter для получения значений, но не отображения их

После нескольких часов расшифровки учебников я, наконец, получил codeigniter и jquery autocomplete, чтобы работать друг с другом … вроде.

Firebug отображает правильные условия поиска в формате JSON, но в раскрывающемся списке не отображается текст. Если есть 2 результата, он отображает 2 пустых строки.

вы можете видеть, что он «не работает» здесь: http://rickymason.net/blurb/main/home

JS:

$(document).ready(function() { $(function(){ $( "#filter" ).autocomplete({ source: function(request, response) { $.ajax({ url: "http://rickymason.net/blurb/main/search/", data: { term: $("#filter").val()}, dataType: "json", type: "POST", success: function(data){ response(data); } }); }, minLength: 2 }); }); }); 

контроллер:

  public function search() { $term = $this->input->post('term', TRUE); $this->thread_model->autocomplete($term); } 

Модель:

  public function autocomplete($term) { $query = $this->db->query("SELECT tag FROM filter_thread ft INNER JOIN filter f ON ft.filter_id = f.filter_id WHERE f.tag LIKE '%".$term."%' GROUP BY tag"); echo json_encode($query->result_array()); } 

Надеюсь, это легко исправить!

благодаря

Изменение кода на что-то вроде этого будет работать (я протестировал на вашем сайте)

 $( "#filter" ).autocomplete({ source: function(request, response) { $.ajax({ url: "http://rickymason.net/blurb/main/search/", data: { term: $("#filter").val()}, dataType: "json", type: "POST", success: function(data){ var resp = $.map(data,function(obj){ return obj.tag; }); response(resp); } }); }, minLength: 2 }); 

Скопируйте и вставьте вышеуказанный блок кода в консоль firebug, а затем попробуйте автозаполнение. Это будет работать. Я пробовал на вашем сайте, и это сработало.

Во-вторых, вам не нужны как $(document).ready(function() { и $(function(){ в то же время, когда они выполняют одно и то же.

Проверьте этот раздел автозаполнения jQuery UI

Ожидаемый формат данных

Данные из локальных данных, URL-адреса или обратного вызова могут иметь два варианта:

Массив строк:

["Выбор1", "Выбор2"]

Массив объектов с

метки и значения: [{label: «Choice1», value: «value1»},

…]

Ссылка: $ .map

Рассматривая этот вопрос на SO, вам нужно настроить свои label и поля value в ответе ответа. Попробуйте либо организовать вывод PHP JSON для сопоставления, либо сопоставить возврат с чем-то следующим следующим (непроверенным).

 response( $.map(data, function(item){ return { label: item.tag, value: item.tag }; })