JQuery UI автозаполнение не работает точно - PullRequest
0 голосов
/ 21 ноября 2011

Привет всем Я видел все вопросы, связанные с этой проблемой, но не смог найти решение. Я работаю с JQuery UI автозаполнения. Мой сценарий такой,

У меня есть флажок. Когда флажок установлен, на сервер отправляется запрос ajax, который извлекает некоторую информацию из базы данных и возвращает данные кодирования json. В случае успеха я вызываю автозаполнение jquery, а в источнике я предоставляю данные, возвращенные моим ajax-запросом. Когда я начинаю что-то писать в своем текстовом поле (я вижу это на вкладке консоли firebug), отправляется запрос get со всеми моими параметрами, которые возвращаются из запроса ajax, например

 http://localhost/project/module/controller/index/%5B%22Mobile%22,%22Watch%22,%22Lamps%22,%22Harry%20Potter%22,%22Suitcase%22,%22Halloween%22,%22Xmas%22,%22Multiple%22,%22oil%22,%22Empty%20Keywords%22,%22iphone%20theme%22,%22Edit%20theme%22,%22Final%20Theme%22%5D?term=mo

и ничего не происходит. Там нет опций, показанных как автозаполнение. Мой код выглядит следующим образом

<input type="checkbox" name="prebuilt-Themes" id="prebuilt-Themes" onclick="get_all_themes();">

Текстовое поле

 <input type="text" id="themes" style="display: none;" class="ui-autocomplete-input">

И функция, которая обрабатывает ajax-запрос

 function get_all_themes()
{

    if($("#prebuilt-Themes").is(':checked'))
    {    
     $('#themes').show();   
     $.ajax({
            type:'POST',
            //data:({string:'abc'}),
            url: "<?= $this->baseUrl(); ?>/module/controller/getallthemes",
            success:function(data)
            {
               $(function() {
               $( "#themes" ).autocomplete({
                    source: data

                        });
                });
            }
        });
     }


}

Данные, которые я получаю из моего Ajax-запроса, выглядят так

  ["Mobile","Watch","Lamps","Harry Potter","Suitcase","Halloween","Xmas","Multiple","oil","Empty Keywords","iphone theme","Edit theme","Final Theme"]

Кто-нибудь может подсказать, что я делаю не так?

1 Ответ

1 голос
/ 21 ноября 2011

Вам необходимо создать ответ ajax в формате json с идентификатором, меткой и значением следующим образом:

[ { "id": "Luscinia svecica", "label": "Bluethroat", "value": "Bluethroat" }, { "id": "Motacilla flava", "label": "Blue-headed Wagtail", "value": "Blue-headed Wagtail" }, { "id": "Cyanistes caeruleus", "label": "Blue Tit", "value": "Blue Tit" }, { "id": "Monticola solitarius", "label": "Blue Rock Thrush", "value": "Blue Rock Thrush" }, { "id": "Anas discors", "label": "Blue-winged Teal", "value": "Blue-winged Teal" }, { "id": "Merops persicus", "label": "Blue-cheeked Bee-eater", "value": "Blue-cheeked Bee-eater" }, { "id": "Tarsiger cyanurus", "label": "Red-flanked Bluetail", "value": "Red-flanked Bluetail" } ]
...