我已将此应用于输入类型文本,但它无效。我需要一些指导来告诉我哪里出错了。这是javascript代码,无法正常工作:
$(document).ready(function () {
$('#reasondescriptiontxtbox').autocomplete( {
source: function (request, response) {
$.ajax( {
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Default.aspx/getReason",
data: "{'keywords':'" + request.term + "'}",
dataType: "json",
async: true,
success: function (data) {
response(data.d);
},
error: function (result) {
//alert("Error");
}
});
},
minLength: 2
});
});
代码背后的代码:
[WebMethod]
public static IList<string> getReason(string keywords)
{
int count = 0;
IList<string> result = new List<string>();
string constr
= System.Web.Configuration.WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
SqlConnection con1 = new SqlConnection(constr);
SqlCommand cmd1 = con1.CreateCommand();
cmd1.CommandText = "select distinct Code_Description from CODE_DESCRIPTION_277 where Code_Description '%" + keywords + "%'";
try
{
con1.Open();
SqlDataReader dr = cmd1.ExecuteReader();
while (dr.Read())
{
count++;
result.Add(dr["Code_Description"].ToString());
if (count == 100)
break;
}
con1.Close();
return result;
}
catch
{
return null;
}
}
我是否需要添加某种jQuery文件?
答案 0 :(得分:2)
您的SQL代码似乎在like
中缺少where Code_Description '%" + keywords + "%'"
,可能是原因吗?
你没有得到任何结果,可能还有一个被你的Catch掩盖的SQL异常。
尝试将该行更改为
cmd1.CommandText = "select distinct Code_Description from CODE_DESCRIPTION_277 where Code_Description like '%" + keywords + "%'";
答案 1 :(得分:1)
如果您使用母版页,那么您的javascript代码应该是这样的 $('#&lt;%= textbox1.ClientID%&gt;')。autocomplete({
并确保您已包含任何版本的jquery.js
答案 2 :(得分:0)
我会将单元测试组织到您的项目中,这样您就可以通过模拟输入单独测试getReason
。然后你可以分而治之,以确定问题所在。如果问题出在客户端,则需要将调试器附加到浏览器并在处理程序中设置断点以检查本地和执行流程。
答案 3 :(得分:0)
我添加了类似关键字,这也是一个问题,其次我改变了这个:$('#reasondescriptiontxtbox').autocomplete(
对此:$('input[id$=reasondescriptiontxtbox]').autocomplete(
现在它工作得很好