В тупике: не удается получить результаты для отображения с помощью автозаполнения пользовательского интерфейса jQuery

Я привел простой пример с автозаполнением jquery и не могу заставить его работать. Я понятия не имею, что не так, никаких ошибок и ничего плохого с моим JSON, но он не отображает результаты.

Вот мой код

<div class="demo">

<div class="ui-widget">
    <label for="title">Title: </label>
    <input id="test" />
</div>


<script>
$(function() {
        $( "#test" ).autocomplete({
            source: "/searchbackend.php"
        });
});
</script>

JSON:

{"title":["Metroid: Other M"]}

person locke92    schedule 03.04.2011    source источник


Ответы (2)


Я предполагаю, что ваш результат должен быть таким ["HELLO","HOW","DO","YOU","DO","?"], поэтому используйте 1d-массив для вывода json.

$array = array("HELLO", "HOW", "DO", "YOU", "DO", "?");

echo json_encode($array);

Чувак .. это прекрасно работает.

$array = array(
                array("label" => "HELLO", "value" => "H"), 
                array("label" => "HOW", "value" => "H"), 
                array("label" => "DO", "value" => "D"),
                array("label" => "YOU", "value" => "Y"),
                array("label" => "DO", "value" => "D"));

echo json_encode($array);

Также попробуйте изменить source: "/searchbackend.php" на source: "searchbackend.php"

person Santosh Linkha    schedule 03.04.2011
comment
Спасибо, это было частью проблемы ... теперь кажется, что автозаполнение не будет работать, если у меня нет значения и метки в моем массиве json. Поэтому я не могу использовать только заголовок. Пытаюсь выяснить, есть ли способ указать пользовательские параметры, а не жестко редактировать исходный код js. - person locke92; 03.04.2011
comment
@ x3sphere .. значит вы пытаетесь показать value-label для автозаполнения ?? - person Santosh Linkha; 03.04.2011
comment
[{id: 1, label: Metroid: Other M}] работает [{id: 1, title: Metroid: Other M}] нет Скрипт жестко запрограммирован для поиска ярлыка, похоже, не похоже, что есть способ изменить это. Я могу легко изменить свой бэкэнд на метку вывода вместо заголовка, это немного раздражает. - person locke92; 03.04.2011

Из точного руководства (относительно параметра source):

Когда используется строка, плагин автозаполнения ожидает, что эта строка будет указывать на ресурс URL, который будет возвращать данные JSON. [...] Сами данные могут быть в том же формате, что и локальные данные, описанные выше.

А для локальных данных:

Локальные данные могут быть простым массивом строк или содержать объекты для каждого элемента в массиве, либо с меткой, либо со свойством значения, либо с обоими. Свойство метки отображается в меню предложений. Значение будет вставлено в элемент ввода после того, как пользователь выберет что-то из меню.

Итак, ваш возврат JSON должен быть либо простым массивом строк, либо массивом таких объектов:

[
    { label: 'Shown to humans', value: 'Value for the text input' },
     ...
] 
person mu is too short    schedule 03.04.2011