Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > JSON Autocomplete


Автор: Vavilen 17.1.2012, 17:17
Добрый день!
Есть скрипт 
Код

<script type="text/javascript">
$(document).ready(function(){




function liFormat (data) {
    //var obj = jQuery.parseJSON(row);
    //var result = obj.element;
    var result=data[0].element;
    return result;
}
function selectItem(li) {
    if( li == null ) var sValue = 'А ничего не выбрано!';
    if( !!li.extra ) var sValue = li.extra[1];
    else var sValue = li.selectValue;
    alert("Выбрана запись с ID: " + sValue);
}

// --- Автозаполнение ---
$("#example").autocomplete("/get_element_json/", {
    delay:10,
    minChars:2,
    matchSubset:1,
    autoFill:true,
    matchContains:1,
    cacheLength:10,
    selectFirst:true,
    formatItem:liFormat,
    maxItemsToShow:10,
    onItemSelect:selectItem
    
    
});

// --- Автозаполнение ---
});
</script>

, который, по идее, должен выводить возле текстового поля 
Код

<input  id="example" type="text"/>

значения, выбираемые из поступившего JSON-ответа сервера на запрос клиента
JSON-ответ:
Код

[
   {
      "element" : "element1"
   },
   {
      "element" : "element2"
   },
   {
      "element" : "element3"
   },
   {
      "element" : "element4"
   }
]

Но по какой-то причине это не происходит. 
Проверил и работает:
- отправка параметра на сервер
- ответ сервера в виде JSON( пример приведен выше)
ТО есть, полученнный ответ не парсится и не выводится в в виде выпадающего списка.
Очень нужна помощь, т.к. бьюсь уже целый день!
Заранее благодарен!

Автор: $дмитрий 17.1.2012, 23:03
Есть подозрения что нужно указать тип данных
Код

dataType: 'json'

Автор: Vavilen 18.1.2012, 10:19
Цитата($дмитрий @  17.1.2012,  23:03 Найти цитируемый пост)
Есть подозрения что нужно указать тип данных

Код


dataType: 'json'


 

Посмотрел в доках. У jquery.autocomplete нет в options возможности указать dataType.
Я попробовал, и сразу перестал уходить параметр q.

Автор: ksnk 18.1.2012, 11:17
Цитата(Vavilen @  18.1.2012,  10:19 Найти цитируемый пост)
 нет в options возможности указать dataType.
Я попробовал, и сразу перестал уходить параметр q.

Значит что-то есть.  smile 

Vavilen, Откуда дровишки плагин взялся? Надо искать и спрашивать в том самом месте. Поковырять сайт поддержки. Спросить автора. Если нету сайта поддержки - бросить плагин и найти более другой, с поддержкой или взять автокомплит из jQuery.UI

Автор: Vavilen 19.1.2012, 16:24
Всем спасибо! Реализовал на jquery.ui, используя плагин autocomplete.
Вот код: 
Код

<script>
$(function() {
    $( "#tags" ).autocomplete({
        source: function(request,response) {
            $.ajax({
                url: "/get_element_json",
                dataType: "json",
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    search: request.term
                },
                success: function(data) {
                    response($.map(data, function(item) {
                        return {
                            label: item.element,
                            value: item.element
                        }
                    }));
                }
            });
        },
        minLength: 2
    });
    });
    </script>


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)