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))
试试这可能会有所帮助