我有一个链接到自动完成处理程序的编辑框,当我输入控制器方法本身没有调用的任何字符时,它甚至不能正常工作。
的jQuery
$("#NameInput").autocomplete({
minChars: 3,
delay: 100,
cacheLength: 25,
autoFill: true,
source: function (request, response) {
$.ajax({
url: "/Data/GetNames", dataType: "json",
data: { id: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.label, value: item.id }; //updated code
}));
}
});
},
select: function (event, ui) {
return false;
}
});
这是控制器方法。
C#
[RequiresRole(Roles = "su, da, rv, sp, dg, ap, ua")]
[AcceptVerbs(HttpVerbs.Get)]
public string GetNames(string term )
{
//perform DB operations
return String.Empty;
}
ASPX
<input type="text" name="NameInput" id="NameInput" class="NameInputField" maxlength="80" tabindex="3" />
这里getNames
方法本身没有调用,在启动时我只是注册了自动完成处理程序。问题是什么?
答案 0 :(得分:0)
据我所知,问题在于你的ajax调用。在您传递的数据中,您将request.term
分配给id
- 但您的控制器方法正在查找名为term
的参数。
从
更改你的ajaxdata: { id: request.term }
到
data: { term: request.term }
或者,从
更改控制器方法public string GetNames(string term)
到
public string GetNames(string id)
答案 1 :(得分:0)
我认为您在网址“/ Data / GetNames”中遇到麻烦,您应该将其更改为“ /Data.aspx/GetNames ”和
[RequiresRole(Roles = "su, da, rv, sp, dg, ap, ua")]
[AcceptVerbs(HttpVerbs.Get)]
[System.Web.Services.WebMethod]
public string GetNames(string term )
{
//perform DB operations
return String.Empty;
}
答案 2 :(得分:0)
这取决于您使用的插件,我使用的是插件http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/。
所以,我找到了解决方案,这里是演示示例http://jquery.bassistance.de/autocomplete/demo/