2016-08-24 88 views
1

有人可以幫我一起使用它們嗎?試過來自同一主題的代碼,但對我來說還不清楚,或者只是過時。 首先,自動完成代碼:玩jquery自動完成正確使用

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

然後,控制器代碼:

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

方法equipmentDAO.get(術語))搜索與名稱==術語對象並返回的SEQ他們。

和路線:

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

回答

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<Result> subjectAutocomplete(String q)

,它創造這樣的結果的列表:

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

默認情況下,jQuery的自動完成構件將額外的回調參數發送到控制器,例如&callback=jQuery110208100147994940178_1491819270607。你必須把它的內容幷包裹你的結果列表。您可以從內控制器中

request().queryString().get("callback"); 

訪問查詢參數所以在最後它看起來就像:

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