Jquery自动完成数据库

我似乎无法弄清楚自动完成搜索栏的代码有什么问题。

我唯一能想到的是我在URL下引用了错误的东西

aspx Javascript

$(document).ready(function() { SearchText(); }); function SearchText() { $(".ui-autocomplete").autocomplete({ source: function(request, response) { $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "Admin_home.aspx/GetAutoCompleteData", data: "{'Car':'" + document.getElementById('query').value + "'}", dataType: "json", success: function(data) { response(data.d); }, Error: function(results) { alert("Error"); } }); } }); } ` 

aspx html代码

我似乎无法在这里输入或粘贴html。 这只是一个
asp:Textbox ID =“query”class =“ui.autocomplete”

c#代码

  [WebMethod] public static List GetAutoCompleteData(string Car) { List result = new List(); using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CarsConnectionString"].ConnectionString)) { using (SqlCommand cmd = new SqlCommand("select DISTINCT Car from T_Car where Car like '%'+ @SearchText +'%", con)) { con.Open(); cmd.Parameters.AddWithValue("@SearchText", Car); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { result.Add(dr["Car"].ToString()); } return result; } } } 

部分html是否需要包装在AJAX更新面板中?

此外,我有来自sql server 2005的搜索拉名称。

这不是jQuery自动完成的工作方式,

jQuery自动完成function会自动将文本框中输入的文本发送到您在webmethod中访问它的查询字符串“term”中指定的位置或像这样的处理程序

  string input = HttpContext.Current.Request.QueryString["term"]; 

这样的事情

  [WebMethod] public static List GetAutoCompleteData(string Car) { string input = HttpContext.Current.Request.QueryString["term"]; List result = new List(); using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CarsConnectionString"].ConnectionString)) { using (SqlCommand cmd = new SqlCommand("select DISTINCT Car from T_Car where Car like '%'+ @SearchText +'%", con)) { con.Open(); cmd.Parameters.AddWithValue("@SearchText", input); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { result.Add(dr["Car"].ToString()); } return result; } } } 

这可以在.aspx页面中找到

  $(".ui-autocomplete").autocomplete({ source: "Admin_home.aspx/GetAutoCompleteData", select: function (event, ui) { } }); 

编辑:

我从来没有在web方法中实际做过这个,我通常使用处理程序.ashx,但这应该同样好。

如果你有所有改变,然后在调试模式下运行网站,开始键入文本框并适合f12并观察这导致的流量 – 如果你输入“abc”它应该看起来像

Admin_home.aspx / GetAutoCompleteData?长期= ABC

那么您可能需要稍微玩一下的响应,默认情况下.net会将“d:….”添加到客户端的响应中,但您可以观看它并按顺序调整

另一个编辑:

   

不是你在jquery中放的东西

  $(".ui-autocomplete").autocomplete({ 

它应该是

   

然而,另一个编辑:

这缺少单引号

  using (SqlCommand cmd = new SqlCommand("select DISTINCT Car from T_Car where Car like '%'+ @SearchText +'%", con)) 

用。。。来代替

  using (SqlCommand cmd = new SqlCommand("select DISTINCT Car from T_Car where Car like '%'+ @SearchText +'%' ", con)) 

试试这可能会有所帮助