-1

私は 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>

誰かが私が間違いを犯している場所を教えてもらえますか?

4

2 に答える 2

0

この行を試してください:

 "~/Handler.ashx"});  

〜なしでfiddler(http://www.fiddler2.com/fiddler2/)を使用して、リクエストが送信されるかどうかを確認します

于 2012-05-18T10:38:59.270 に答える
0

オートコンプリートを初期化する方法は問題ありません。sourceオプションをハンドラーに設定する必要があります。

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

また、オートコンプリートは、検索する値をterm、ではなくクエリ文字列キーとして送信しますq。したがって、ハンドラーでは、次の値を取得します。

string prefixText = context.Request.QueryString["term"];
于 2012-05-18T10:39:18.267 に答える