使用jquery自动完成有困难吗

使用jquery自动完成有困难吗,jquery,asp.net,Jquery,Asp.net,我对jquery绝对是新手。但我想把它用于一个大学项目。我使用了Web服务。这些值是从SQL数据库检索的。代码编译时没有任何错误。但是自动完成功能不起作用 处理程序的代码如下所示: <%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Collections; using System.Configuration; using System.Data;

我对jquery绝对是新手。但我想把它用于一个大学项目。我使用了Web服务。这些值是从SQL数据库检索的。代码编译时没有任何错误。但是自动完成功能不起作用

处理程序的代码如下所示:

 <%@ WebHandler Language="C#" Class="Handler" %>

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.SqlClient;
    using System.Text;


    public class Handler : IHttpHandler
    {

    public void ProcessRequest(HttpContext context)
    {
        string prefixText = context.Request.QueryString["q"];
        string constr = "Data Source=USER\\SQLEXPRESS;Initial Catalog=my_db;Integrated Security=True;";
        using (SqlConnection conn = new SqlConnection(constr))
        {
           // conn.ConnectionString = ConfigurationManager
                  //  .ConnectionStrings["constr"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand(constr,conn))
            {
                cmd.CommandText = "select [name] from names where " +
                "[name] like @SearchText + '%'";
                cmd.Parameters.Add("@SearchText", SqlDbType.VarChar, 50).Value = prefixText + "%";
                cmd.Connection = conn;
                StringBuilder sb = new StringBuilder();
                conn.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        sb.Append(sdr["name"])
                            .Append(Environment.NewLine);
                    }
                }
                conn.Close();
                context.Response.Write(sb.ToString());
            }
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
    }
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Home.aspx.cs" Inherits="Home" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
    <script src="scripts/jquery-1.7.2.js" type="text/javascript"></script>
    <script src="scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
     <script src="scripts/jquery.ui.autocomplete.js" type="text/javascript"></script>
    <script src="scripts/jquery.ui.core.js" type="text/javascript"></script>
    <script src="scripts/jquery.ui.position.js" type="text/javascript"></script>
    <script src="scripts/jquery.ui.widget.js" type="text/javascript"></script>
    <link href="scripts/demos.css" rel="stylesheet" type="text/css" />"
    <script type="text/javascript">
          $(document).ready(function () {
            $("#<%= txtsearch.ClientID %>").autocomplete({
                minLength: 1,
                delay: 0,
                "~/Handler.ashx"});      
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:TextBox ID="txtsearch" runat="server"></asp:TextBox>

    </div>
    </form>
</body>
</html>
脚本的代码如下所示:

 <%@ WebHandler Language="C#" Class="Handler" %>

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.SqlClient;
    using System.Text;


    public class Handler : IHttpHandler
    {

    public void ProcessRequest(HttpContext context)
    {
        string prefixText = context.Request.QueryString["q"];
        string constr = "Data Source=USER\\SQLEXPRESS;Initial Catalog=my_db;Integrated Security=True;";
        using (SqlConnection conn = new SqlConnection(constr))
        {
           // conn.ConnectionString = ConfigurationManager
                  //  .ConnectionStrings["constr"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand(constr,conn))
            {
                cmd.CommandText = "select [name] from names where " +
                "[name] like @SearchText + '%'";
                cmd.Parameters.Add("@SearchText", SqlDbType.VarChar, 50).Value = prefixText + "%";
                cmd.Connection = conn;
                StringBuilder sb = new StringBuilder();
                conn.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        sb.Append(sdr["name"])
                            .Append(Environment.NewLine);
                    }
                }
                conn.Close();
                context.Response.Write(sb.ToString());
            }
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
    }
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Home.aspx.cs" Inherits="Home" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
    <script src="scripts/jquery-1.7.2.js" type="text/javascript"></script>
    <script src="scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
     <script src="scripts/jquery.ui.autocomplete.js" type="text/javascript"></script>
    <script src="scripts/jquery.ui.core.js" type="text/javascript"></script>
    <script src="scripts/jquery.ui.position.js" type="text/javascript"></script>
    <script src="scripts/jquery.ui.widget.js" type="text/javascript"></script>
    <link href="scripts/demos.css" rel="stylesheet" type="text/css" />"
    <script type="text/javascript">
          $(document).ready(function () {
            $("#<%= txtsearch.ClientID %>").autocomplete({
                minLength: 1,
                delay: 0,
                "~/Handler.ashx"});      
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:TextBox ID="txtsearch" runat="server"></asp:TextBox>

    </div>
    </form>
</body>
</html>
谁能告诉我哪里出了错。

试试这句话:

 "~/Handler.ashx"});  
没有~
用小提琴http://www.fiddler2.com/fiddler2/ 要查看是否发送了请求,初始化自动完成的方式不正确。您必须为处理程序设置源选项:

$("#<%= txtsearch.ClientID %>").autocomplete({
    source: "Handler.ashx",
    minLength: 1,
    delay: 0
});

此外,SQL正在选择名称。自动完成接受一个项目数组。请看这里Qpirate你能告诉我我对处理程序做了哪些修改吗?。实际上,我从一个站点获得了处理程序代码。我需要从表中检索结果集。所以我只使用了给定的代码。请帮忙……你能告诉我怎么用吗。我已经下载了。但我觉得有点复杂。这听起来也像是一个基于web的网站。我只是在本地机器上使用它。请帮忙。