在游戏中使用mysql的数据自动完成?

时间:2011-11-03 06:58:05

标签: jquery mysql jquery-ui playframework jquery-autocomplete

我正在使用这个游戏开展一个项目!框架和我目前卡住试图找出如何连接基本的jquery自动完成以使用mysql数据库作为数据源并从中检索信息。有人曾尝试过这个吗?感谢。

2 个答案:

答案 0 :(得分:3)

使用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);
          });
        }
      });
  });
});

在这里,您可以在控制器“MyController”上调用方法getObjects。这个方法看起来像

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

其中“findByName”是模型对象中按名称搜索对象的方法。 AUTOCOMPLETE_MAX是一个const,它定义了要检索的最大对象数。

控制器方法getObjects在javascript中返回一个名为“val”的json对象。请注意,您必须将此对象中的值映射到具有“标签”和“id”的对象,该对象可由jquery自动完成管理。

使用此解决方案,您将在控制器验证方法中返回对象名称。我喜欢这个解决方案,因为您可以在控制器中按名称搜索对象,允许用户使用自动完成列表选择一些内容。然后,您将在控制器验证方法中验证名称。

您在lunatech网站上有另一个基于ID的解决方案:http://www.lunatech-research.com/archives/2011/07/05/jquery-ui-ajax-autocomplete-playframework

答案 1 :(得分:-2)

尝试使用jquery-UI自动完成功能。

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

这可能会有所帮助

在auto complete jquery UI中,您可以将输入(源)作为字符串,数组或javascript回调。

在您的情况下,您可以使用回调作为源,并可以使用ajax从mysql获取数据。

我还没有尝试过,但我想它应该可行。