如何使用jquery自动完成?

时间:2011-01-09 14:28:31

标签: java javascript jquery autocomplete jquery-autocomplete

我正在使用JSP创建一个Web项目,并尝试使用jquery自动完成功能从我的数据库中实现对用户的简单搜索,但是我无法理解它是如何工作的。我对jquery和ajax几乎没有任何了解只是为了让你知道。我已完成以下代码并被卡住了。

<%@page contentType="text/html" pageEncoding="UTF-8" import="ewa.dbConnect,ewa.sendEmail,ewa.pwGen,ewa.hashPw,java.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="css/jquery.autocomplete.css" />
        <script src="js/jquery.autocomplete.js"></script>
        <script type="text/javascript"
            src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <input type="text" id="search" name="search"/>
        <script>
        $("#search").autocomplete("getdata.jsp");
    </script>
    </body>
</html>

getdata.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" import="ewa.dbConnect,java.sql.*" %>
<%! dbConnect db = new dbConnect(); %>
<%
String query = request.getParameter("q");
db.connect();
Statement stmt = db.getConnection().createStatement();
ResultSet rs = stmt.executeQuery("SELECT username FROM created_accounts WHERE username LIKE "+query);
while(rs.next())
{
    out.println(rs.getString("username"));
}
db.disconnect
%>

如果我没有错,我从网站上读到,参数q是默认的,就在那里,但是我如何显示数据呢?如何将getdata.jsp中的值传递给自动完成?

3 个答案:

答案 0 :(得分:7)

在包含jQuery之前,您正在调用自动​​完成脚本标记。因此,没有jQuery可以锁定(因为jQuery对象尚未定义),jQuery自动完成插件中的任何内容都不会加载。

你有

 <script src="js/jquery.autocomplete.js"></script>
 <script type="text/javascript"
     src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

应该是

    <script type="text/javascript"
        src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script src="js/jquery.autocomplete.js"></script>

撤销订单,你提到的Firebug错误应该消失;我不确定它会解决所有问题,但在解决之前一切都无法解决。

答案 1 :(得分:0)

我没有看到包含jQuery UI(一个提供自动完成功能)

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

所以你需要包含jquery.ui.autocomplete.js (或者您使用插件自动完成?如果是,请转到jquery UI版本)

也可能是getdata.jsp中的数据格式不正确,无法用于自动填充。

您是如何尝试在浏览器中调试javascript的,例如chrome或firefox(使用firebug)

答案 2 :(得分:0)

我通常给(对于jquery UI自动完成)一个JSON格式的答案,而我看到你的答案循环给出一个CR分隔列表。

在getdata.jsp而不是produce:

jim<cr>
jack>cr>
jhon<cr>

尝试返回:

[{label: 'jim', value: 'jim'}, {label:
 'jack', value: 'jack'}, {label:
 'jhon', value: 'jhon'}]