2012-05-21 3 views
0

У меня есть этот вход json. [{"id1": "val1", "id2": "val2"}, {"id1": "val3", "id2": "val4"}, ...]jquery-ui - Автозаполнение для данных json

Как разобрать этот внутренний плагин автозаполнения доступен в jquery-ui? В принципе, я хочу, чтобы val1, val3 и т. Д., Соответствующие id1, были частью моего текста автозаполнения. Любые предложения о том, как я могу продолжить это?

+0

Является ли это с удаленным или локальным источником данных? Вы можете показать свой код автозаполнения? –

+0

Это из локального источника данных, который я подготовил из своей таблицы sql. На самом деле я не хотел запускать «как» запрос каждый раз, когда пользователь вводит что-то. –

ответ

1

автозаполнения виджет ожидает массив простых строковых значений или объектов со свойствами label, value или обоих.

Вы можете использовать ваши данные и преобразовать их в соответствующий формат с помощью утилиты $.map. Это предполагает, что вы делаете ваш запрос AJAX успешно и данные возвращаются:

$.getJSON("/url", function(data) { 
    var src = $.map(function (el) { 
     return el.id1; 
     // or: 
     // return { label: el.id1, value el.id2 }; 
    }); 

    $("#id").autocomplete({ 
     source: src 
    }); 
}); 

Пример:http://jsfiddle.net/df6wB/

+0

Спасибо, это сработало. Я также думал, что для элементов массива должно быть возможно отображение. Спасибо за ваш ответ. :) –

+0

@AnkitGarg: Удивительно! Пожалуйста, [Примите ответ] (http://meta.stackexchange.com/q/5234/153691), если это поможет. –

0

Чтобы преобразовать строку JSON в объект JSON, используйте $.parseJSON(...). Здесь var jsonstring - это текст, содержащий текст JSON и ничего больше. parseJSON() не будет работать, если строка недействительна JSON.

var jsonobj = $.parseJSON(jsonstring); 

Затем использовать, чтобы вставить new options автозаполнение.

Получить значения из jsonobj таким образом:

alert(jsonobj.id1); 
alert(jsonobj.id2); 
+0

Здесь jsonstring - массив, определенный в моем предыдущем сообщении. Я пытаюсь этот массив, но jsonobj возвращается как null. Любые указатели на это? –

+0

Если это уже объект, вам не нужно '$ .parseJSON()', вы должны добавить более подробную информацию к своему вопросу, чтобы получить более качественные ответы. ** Несколько строк исходного кода стоят более тысячи слов. ** –

+0

Я использую этот '$ (document) .ready (function() { var sA = []; $ .getJSON (" URL to мой массив объектов json ", функция (данные) { $ .each (данные, функция (i, val) { sA.push (val.v); }); $ (" # id "). автозаполнение ({source: sA, minLength: 2, cache: false}); ' –

Смежные вопросы