2012-05-18 42 views
-1

我絕對是jquery的新手。但是想把它用於大學項目。我使用了一個web服務。這些值從SQL數據庫中檢索。代碼編譯沒有任何錯誤。但自動完成功能不起作用。與jquery自動完成困難時間

該處理程序的代碼下面給出:

<%@ 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> 

誰能告訴我我在哪裏comitting錯誤:

<%@ 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; 
     } 
    } 
    } 

的腳本代碼下面給出。

回答

0

嘗試這一行:

"~/Handler.ashx"}); 

而不〜 使用Fiddler(http://www.fiddler2.com/fiddler2/),看看是否將請求發送

+0

你能告訴我如何使用它。我已經下載了它。但對我來說感覺有點複雜。這聽起來像是一個基於網站的網站。我只是在本地機器上使用它。請幫助。 –

0

初始化方式自動填充不正確。你必須設置source選項,你的處理程序:

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

此外,自動完成將發送值來搜索查詢字符串作爲關鍵term,不q。所以在你的處理器中你可以得到以下值:

string prefixText = context.Request.QueryString["term"]; 
+0

另外您的SQL正在選擇名稱自動完成接受項目數組。 看看這裏http://jqueryui.com/demos/autocomplete/#remote – Qpirate

+0

Qpirate可以請你告訴我,我必須對處理程序做什麼修改?我其實從站點獲得處理程序代碼。我需要從表中檢索結果集。所以我只是使用給定的代碼。請幫忙... –