jquery自动完成渲染问题

时间:2012-02-13 19:19:21

标签: javascript jquery servlets jquery-ui-autocomplete

我试图通过servlet接收数据来实现jQuery自动完成插件。 该脚本工作,它确实从servlet中提取结果,但我无法在下拉菜单中正确呈现它。假设我在搜索栏中写“hel”,自动完成下拉列表是:

h
e
l
l
o

根据我的理解,autocomplete插件应该接收一个数组,我认为这可能是问题。 这是我的javascript代码:

<script>
function getFilteredNames(request, response){

    $.ajax({
        type: "POST",
        url: "../servlet/Autocomplete", 
        data: request,
        success: function(data) {
            response(data);
        }
    });
}

$(document).ready(function(){
        $("#buscar").autocomplete({ source : getFilteredNames, minLength: 3}); 
});
</script>

这是servlet代码的一部分:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        try {
            String query = request.getParameter("term");
            List<Socio> rs = new ArrayList<Socio>();    
            rs = SocioDAO.getSociosByQuery(query);      

                if (rs.isEmpty()) {
                    out.println("No hay coincidencias");
                }
                else {

                    Iterator <Socio> iterator = rs.iterator();
                    while (iterator.hasNext()) {
                        String nombre = (String) iterator.next().getNombre();
                        out.println(nombre);
                    }

            }

任何建议都将不胜感激! 谢谢, 尼克

1 个答案:

答案 0 :(得分:0)

自动完成UI插件接受数组,以JSON数据格式化的对象。

  1. 所以你必须把数据类型:json放在你的$ .ajax Call
  2. 由于您使用servlet,您必须先将其格式化为json格式 通过ajax调用发送到客户端。
  3. 将ur数据转换为json格式你可以使用http://www.json.org/提供的实用程序调用