自动完成不工作,需要帮助

本文关键字:帮助 工作 | 更新日期: 2023-09-27 18:13:44

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

自动完成不工作,需要帮助

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

你将得不到任何结果,并且可能是一个SQL异常,它被你的Catch掩盖了。

试着把那行改成

cmd1.CommandText = "select distinct Code_Description from CODE_DESCRIPTION_277 where Code_Description like '%" + keywords + "%'";

如果你使用的是Master页面,那么你的javascript代码应该是这样的$ (' # & lt; % = textbox1。ClientID %>").autocomplete ({

并确保包含了所有版本的jquery.js

我会将单元测试组织到您的项目中,以便您可以单独测试getReason,并使用模拟输入。然后你可以分而治之,找出问题所在。如果问题发生在客户端,则需要在浏览器上附加一个调试器,并在处理程序中设置一个断点,以检查局部变量和执行流程。

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