我有文本框名称txtEmailList,我为它提供了自动完成列表,
<asp:TextBox runat="server" ID="txtEmailList" CssClass="txtAutoComplete">
自动填充脚本
$('#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.d);
}
});
输出将如下所示(在firebug中显示为plain / text),如何将此数组附加到source属性。 (我不能使用$ .ajax方法,因为我需要使用ajaxpro作为office规则),所以我从ajax调用中获取数组列表,如何绑定自动完成。
[“List 1”,“List 2”,“List 3”,“List 4”]; / * //这是来自jquery的输出响应(来自firebug)
[AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public List<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;
}
这是响应标头
中的firebug输出Cache-Controlno-cache Content-Length40 Content-Typetext / plain; charset = utf-8 DateWed,2012年3月7日10:45:37 GMT 期满-1Pragmano缓存
答案 0 :(得分:5)
而不是返回List。我会返回一个字符串数组:
[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();
}
答案 1 :(得分:2)
而不是使用
$('#txtEmailList')
尝试使用
$('input[id$="txtEmailList"]')
由于您使用的是服务器控件TextBox,因此您的ID很可能最终为“parentID1_parentID2_txtEmailList”。上面的代码将获取具有以“txtEmailList”结尾的ID的输入。
以下是我在测试项目中的表现,并且它正在运行。当然我没有使用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>
答案 2 :(得分:1)
不应该是:
$('#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)来分析响应对象。
答案 3 :(得分:1)
请确保您的AJAX调用返回有效字符串格式,如此dummy example。
将其存储在变量中。
然后使用它来定义source
属性,如下所示:
var availableValues = ["List 1","List 2","List 3","List 4"];
// var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value;
$( "#txtEmailList" ).autocomplete({
source: availableValues
});