Автозаполнение с использованием данных из MySQL в игре? - PullRequest
1 голос
/ 03 ноября 2011

Я работаю над проектом, использующим пьесу!Framework, и я в настоящее время застрял, пытаясь выяснить, как подключить базовое автозаполнение JQuery для использования базы данных MySQL в качестве источника данных и получения информации из него.Кто-нибудь пробовал это раньше?Спасибо.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Для автозаполнения jqueryui вам просто нужно задать поле ввода с помощью специального класса "автозаполнение":

<input type="text" class="ui-state-default autocomplete" name="object.name" value="" />

Затем вы можете использовать этот код jquery для настройки автозаполнения

$(document).ready(function(){
  $('input.autocomplete').each( function() {
    var $input = $(this);
    // Set-up the autocomplete widget.
    $(this).autocomplete({
        minLength: 3,
        source : function(req, resp) {
          $.getJSON("@{MyController.getObjects()}?term=" + req.term , req, function(data) {
            var suggestions = [];
            $.each(data, function(i, val) {
              var obj = {};
              obj.label = val.name;
              obj.id = val.id;
              suggestions.push(obj);
            });
            resp(suggestions);
          });
        }
      });
  });
});

Здесь вы вызываете метод getObjects на контроллере «MyController».Этот метод выглядит как

public static void getObjects(final String term) {
    renderJSON(MyObject.findByName(term, AUTOCOMPLETE_MAX));
}

, где "findByName" - это метод в объекте вашей модели, который ищет объекты по имени.AUTOCOMPLETE_MAX - это const, определяющий максимальное количество объектов, которые вы хотите получить.

Метод контроллера getObjects возвращает объект json, который называется "val" в javascript.Обратите внимание, что вам необходимо отобразить значения из этого объекта в объект с «меткой» и «идентификатором», которыми можно управлять с помощью автозаполнения jquery.

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

У вас есть другое решение на основе идентификатора на сайте lunatech: http://www.lunatech -research.com / archives / 2011/07/05 / jquery-щ-Аякс-автозаполнения-playframework

0 голосов
/ 03 ноября 2011

Попробуйте использовать автозаполнение jquery-UI.

http://jqueryui.com/demos/autocomplete/

Это может помочь

В пользовательском интерфейсе автозаполнения jquery вы можете указать входные данные (источники) в виде обратного вызова в виде строки, массива или JavaScript.

В вашем случае вы можете использовать обратный вызов в качестве источника и использовать ajax для получения данных из mysql.

Я не пробовал, но думаю, это должно сработать.

...