【问题标题】:Play with jquery autocomplete proper usage玩 jquery 自动完成正确用法
【发布时间】:2017-07-10 18:45:39
【问题描述】:

有人可以帮我一起使用它们吗?尝试了相同主题的代码,但我不清楚或只是过时了。 一、自动补全代码:

<script>
  $( function() {
    $( "#tags" ).autocomplete({
      source: //What should be here?
    });
  });
</script>

然后,控制器代码:

def auto(term:String) = Action {
  Ok (Json.toJson(equipmentDAO.get(term))) }
}

方法 equipmentDAO.get(term)) 搜索具有 name == term 的对象并返回它们的 Seq。

还有路线:

GET     /auto/:term                         controllers.BasicController.auto(term : String)

【问题讨论】:

    标签: json scala playframework autocomplete


    【解决方案1】:

    要启用自动完成,您必须提供JSONP object

    在 play2 中我使用这种模式取得了一些成功

    $( "#tags" ).autocomplete({
            select : function(event, ui) {
                //... do something if selected
                return false;
            },
            source : function(request, response) {  
                $.ajax({
                    url : "/myautocompletionEndpoint",
                    dataType : "jsonp",
                    data : {
                        q: request.term,
                    },
                    success : function(data) {
    
                        response(data);
                    }
                });
            }
        });
    

    /myautocompletionEndpoint 路由下,我提供了一个返回 JSONP 对象的控制器。

    控制器方法的签名是:

    public CompletionStage&lt;Result&gt; subjectAutocomplete(String q).

    它会创建一个这样的结果列表:

    [
      {"label":"Some label","value":"Some Value"},
      ....
    ]
    

    默认情况下,jQuery 自动完成小部件会向控制器发送一个额外的回调参数,例如&amp;callback=jQuery110208100147994940178_1491819270607。您必须获取它的内容并将结果列表包装到其中。您可以通过

    从控制器内部访问查询参数
    request().queryString().get("callback");
    

    所以最后会是这样的:

    String result="/**/jQuery110208100147994940178_1491819270607([{"label":"Some label","value":"Some Value"}])";
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2015-11-21
      • 1970-01-01
      • 2011-09-08
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多