0

我已将其应用于输入类型的文本,但它不起作用。我需要一些指导来告诉我哪里出错了。这是 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 文件吗?

4

4 回答 4

2

您的 SQL 代码似乎缺少likein where Code_Description '%" + keywords + "%'",这可能是原因吗?

您不会得到任何结果,并且可能会出现被 Catch 掩盖的 SQL 异常。

尝试将该行更改为

cmd1.CommandText = "select distinct Code_Description from CODE_DESCRIPTION_277 where Code_Description like '%" + keywords + "%'";
于 2013-05-16T08:55:07.383 回答
1

如果您使用的是母版页,那么您的 javascript 代码应该是这样的 $('#<%= textbox1.ClientID %>').autocomplete({

并确保您已包含任何版本的 jquery.js

于 2013-05-16T13:38:11.300 回答
0

我会将单元测试组织到您的项目中,以便您可以getReason使用模拟输入进行单独测试。然后你可以分而治之,以确定问题出在哪里。如果问题出在客户端,您需要将调试器附加到浏览器并在处理程序中设置断点以检查本地和执行流程。

于 2013-05-16T13:44:43.143 回答
0

我添加了like关键字,这也是一个问题,其次我将这个:$('#reasondescriptiontxtbox').autocomplete( 改为:$('input[id$=reasondescriptiontxtbox]').autocomplete( 现在它工作得很好

于 2013-05-18T04:32:17.423 回答