Javascript Can';无法获取jQuery自动完成以进行筛选

Javascript Can';无法获取jQuery自动完成以进行筛选,javascript,jquery,asp.net,autocomplete,Javascript,Jquery,Asp.net,Autocomplete,嗨,我正在尝试让jQuery的自动完成ui工作 目前我有一个asp.net文本框,我正在调用一个Web服务并将此列表的结果链接到文本框。我调用的Web服务从SQL数据库获取未筛选的结果列表 public List<string> getAutoCompleteList() { DataSet dsAutoList = getAutoList(); DataTable dtAutoList = dsAutoList.Tables[0]; List<stri

嗨,我正在尝试让jQuery的自动完成ui工作

目前我有一个asp.net文本框,我正在调用一个Web服务并将此列表的结果链接到文本框。我调用的Web服务从SQL数据库获取未筛选的结果列表

public List<string> getAutoCompleteList() {
    DataSet dsAutoList = getAutoList();
    DataTable dtAutoList = dsAutoList.Tables[0];
    List<string> lstTitles = new List<string>();
    foreach (DataRow drAutoList in dtAutoList.Rows)
    {
        //zAutolist = zAutolist + drAutoList["course_title"].ToString();
        lstTitles.Add(drAutoList["course_title"].ToString());
    }

    return lstTitles;
}
如果我开始在文本框中输入,结果就会出现,但问题是,结果列表没有根据我在搜索框中输入的内容进行过滤,它只显示列表中的每个项目,并且无论我输入什么,都不会进行过滤

有人能抽出几分钟让我知道我做错了什么吗

谢谢,
Craig

由于您不想根据输入动态填充搜索词,因此必须在初始化自动完成之前将搜索项填充到数组中,即将$.ajax调用移到自动完成调用之外:

$.ajax({
    url: "/webservice/wsJQueryAutoComplete.asmx/getAutoCompleteList",
    dataType: "json",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    // Changed here:
    success: function(data) {
        $(".txtSearch").autocomplete({
             source: data.d
        });
    }
});
因此,当初始化jquery自动完成时,您将传递一个预填充的数组作为源参数,这将导致过滤器作用于静态列表

$(".txtSearch").autocomplete({
    source: prepopulatedList
});

您并没有将文本框中键入的数据发送到ajax调用,在此基础上您可以获得过滤列表,相反,当您向服务器发送请求时,它会返回整个列表,并将搜索到的术语也发送到服务器,如
数据:{term:request.term}
并在服务器中实现过滤器logic@Deepanshu我想对服务器进行的唯一调用是获取用户所有可用标题的完整列表。我认为jquery autocomplete函数会根据用户在搜索框中键入的内容过滤这个列表,而不必一次又一次地返回服务器。不是这样吗?意味着即使输入xyz这样的随机字符串,它也会显示整个列表?是的,只要输入3个或更多字符,列表就会完全未过滤
$(".txtSearch").autocomplete({
    source: prepopulatedList
});