2010-09-13 3 views
0

Я использую this jquery ui autocomplete, но мне нужно захватить данные из объекта json каждое нажатие клавиши и поместить его в раскрывающееся меню по мере ввода пользователем. Но в данном примере используется просто массивКак получить данные с помощью ajax-запроса

<script type="text/javascript"> 
$(function() { 
    var availableTags = ["ActionScript", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure", "COBOL", "ColdFusion", "Erlang", "Fortran", "Groovy", "Haskell", "Java", "JavaScript", "Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme"]; 
    $("#request_artist").autocomplete({ 
     source: availableTags 
    }); 
}); 
</script> 

Я думал сделать запрос Ajax на нажатие клавиши, но это полностью противоречит функциональности Autocomplete

+0

Вы должны включить это в свою функцию автозаполнения(). И да, он должен быть запущен на клавиатуре. – pixeline

ответ

3

Там пример на плагин странице в http://jqueryui.com/demos/autocomplete/#remote-jsonp Просто нажмите Просмотреть ссылку источника. Соответствующая часть:

$("#city").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "http://ws.geonames.org/searchJSON", 
       dataType: "jsonp", 
       data: { 
        featureClass: "P", 
        style: "full", 
        maxRows: 12, 
        name_startsWith: request.term 
       }, 
       success: function(data) { 
        response($.map(data.geonames, function(item) { 
         return { 
          label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, 
          value: item.name 
         } 
        })) 
       } 
      }) 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
      log(ui.item ? ("Selected: " + ui.item.label) : "Nothing selected, input was " + this.value); 
     }, 
     open: function() { 
      $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
     }, 
     close: function() { 
      $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
     } 
    }); 
+0

ты избил меня ... +1 –