在c#中的文本框控件上使用jquery自动完成

时间:2014-05-27 08:38:22

标签: c# asp.net jquery-ui

当我运行此代码时,我会收到警告,说错误。

我的代码:

<script type="text/javascript">
    debugger;
    $(document).ready(function () {
        SearchText();
    });
    function SearchText() {
        $(".auto").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Default.aspx/GetAutoCompleteData",
                    data: "{'fname':'" + document.getElementById('txtCategory').value + "'}",
                    dataType: "json",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
            }
        });
    }
</script>

 [WebMethod]
 public static List<string> GetAutoCompleteData(string CategoryName)
    {
        List<string> result = new List<string>();
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DbConnection"].ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("select fname from tblreg where fname LIKE '%'+@CategoryText+'%'", con))
            {
                con.Open();
                cmd.Parameters.AddWithValue("@CategoryText", CategoryName);
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    result.Add(dr["fname"].ToString());
                }
                return result;
            }
        }
    }

我想调试我的函数GetAutoCompleteData但是根本没有触发断点。 这段代码有什么问题?请指导。Error Image 我上面附有屏幕截图。

2 个答案:

答案 0 :(得分:0)

您需要在方法上添加[WebMethod]属性。所以你的方法看起来像这样

[WebMethod]
public static List<string> GetAutoCompleteData(string CategoryName)
{
  ....

如何使用网络方法link

编辑1

在您编写url: "GetAutoCompleteData",的jQuery中,您需要指定类或页面名称,然后指定方法名称。

你无法直接调用Method,你需要使用类(.aspx页面)然后使用方法。

答案 1 :(得分:0)

您需要更改数据属性的$.ajax()调用值才能正确反映C#方法参数,即更改此行

data: "{'fname':'" + document.getElementById('txtCategory').value + "'}",

data: "{'CategoryName':'" + document.getElementById('txtCategory').value + "'}",

data属性应该与action方法的签名中的参数匹配。