jquery使用列表自动完成<;字符串>;作为来源

jquery使用列表自动完成<;字符串>;作为来源,jquery,asp.net,jquery-ui,ajaxpro,Jquery,Asp.net,Jquery Ui,Ajaxpro,我有文本框名txtEmailList,我为它提供了自动完成列表 <asp:TextBox runat="server" ID="txtEmailList" CssClass="txtAutoComplete"> 输出如下(在firebug中显示为纯文本),如何将此数组附加到源属性。(我不能使用$.ajax方法,因为我需要使用ajaxpro作为办公规则),所以我从ajax调用中获取数组列表,如何绑定autocomplete [“列表1”、“列表2”、“列表3”、“列表4”];/*/

我有文本框名txtEmailList,我为它提供了自动完成列表

 <asp:TextBox runat="server" ID="txtEmailList" CssClass="txtAutoComplete">
输出如下(在firebug中显示为纯文本),如何将此数组附加到源属性。(我不能使用$.ajax方法,因为我需要使用ajaxpro作为办公规则),所以我从ajax调用中获取数组列表,如何绑定autocomplete

[“列表1”、“列表2”、“列表3”、“列表4”];/*//这是jquery的输出响应(来自firebug)

[AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
公共列表自动完成(字符串查询)
{
List objLisItmes=新列表();
对象列表添加(“列表1”);
添加(“列表2”);
添加(“列表3”);
添加(“列表4”);
返回目标视图;
}
这是响应头中的firebug输出

缓存控制无缓存内容长度40内容类型文本/普通; charset=utf-8日期2012年3月7日星期三格林尼治标准时间10:45:37 Expires-1parano-cache


而不是返回列表。我将返回字符串数组,如下所示:

[AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public string[] AutoComplete(string query)
{
   List<string> objLisItmes = new List<string>();
   objLisItmes.Add("List 1");
   objLisItmes.Add("List 2");
   objLisItmes.Add("List 3");
   objLisItmes.Add("List 4");
   return  objLisItmes.ToArray();
}
[AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
公共字符串[]自动完成(字符串查询)
{
List objLisItmes=新列表();
对象列表添加(“列表1”);
添加(“列表2”);
添加(“列表3”);
添加(“列表4”);
返回objLisItmes.ToArray();
}
而不是使用

$('#txtEmailList')
试用

$('input[id$="txtEmailList"]')
由于您使用的是服务器控件文本框,因此您的ID很可能会以类似“parentID1\U parentID2\U txtEmailList”的形式结束。上面的代码将获取ID以“txtEmailList”结尾的输入

下面是我在我的测试项目中是如何做的,它是如何工作的。当然我没有使用AjaxPro,所以我不确定你会如何使用它,但也许它会给你一些想法

<script type="text/javascript">
        $(function () {
            var element = $('input[id$="TextBox1"]');

            element.autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: "Default.aspx/GetList",
                        data: "{ 'term': '" + request.term + "' }",
                        dataType: "json",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        dataFilter: function(data) { return data; },
                        success: function (data) {
                            response($.map(data.d, function (item) {
                                return {
                                    value: item
                                }
                            }))
                        }
                    })
                }
            });
        });
    </script>

$(函数(){
var元素=$('input[id$='TextBox1']);
元素自动完成({
来源:功能(请求、响应){
$.ajax({
url:“Default.aspx/GetList”,
数据:“{'term':'”+request.term+“}”,
数据类型:“json”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
dataFilter:函数(数据){返回数据;},
成功:功能(数据){
响应($.map)(数据.d,函数(项){
返回{
价值:项目
}
}))
}
})
}
});
});
不应该是:

$('#txtEmailList').autocomplete({source: function(request, response) {
    // this is the ajax call, which is running successfully
    var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value; //(ajaxpro functions)
    response(msg); 
    }

});
?


如果没有,我建议您尽可能使用console.log(msg)来分析响应对象。

只要确保AJAX调用返回的字符串格式如下。 将其存储在变量中。 然后使用它定义
source
属性,如下所示:

var availableValues = ["List 1","List 2","List 3","List 4"];
// var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value;
$( "#txtEmailList" ).autocomplete({
    source: availableValues
});

我想你需要返回你从服务器上得到的东西…怎么做?我已经尝试了响应(msg.d),但它没有显示在自动完成。。。写这个:
returnmsg我尝试返回消息,但没有成功;(你能同时显示文本框的html吗?会有什么变化?返回数组会有帮助吗?它会有什么帮助吗?列表应该可以正常工作,并且看起来是这样的,因为你说你要返回项目列表。你能显示文本框的html吗?谢谢:)任何方式都可以。现在,我不明白为什么这里需要ToArray()?区别是什么?因为我直接访问它?我认为这不是答案。甚至它在jquery的开放函数中的提交也不会在网格视图中自动完成。渲染成那样。它位于div中的纯文本框中,即使我检查了渲染id,它也与我在jquery选择器中给出的相同。所以,我想问题在于响应类型
$('#txtEmailList').autocomplete({source: function(request, response) {
    // this is the ajax call, which is running successfully
    var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value; //(ajaxpro functions)
    response(msg); 
    }

});
var availableValues = ["List 1","List 2","List 3","List 4"];
// var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value;
$( "#txtEmailList" ).autocomplete({
    source: availableValues
});