当我使用JQuery的自动完成并对页面中的数组值进行硬编码时,它工作得非常好;但我需要做的是从Web服务或控制器内的公共函数获取数组值。我尝试了各种各样的方法,但似乎无法使其发挥作用。我得到的最远的是将数据拉入一个长字符串,当提供自动完成结果时,它是匹配的长字符串,我理解为什么。
$("#TaskEmailNotificationList").autocomplete("http://localhost/BetterTaskList/Accounts/registeredUsersEmailList", {
multiple: true,
mustMatch: false,
multipleSeparator: ";",
autoFill: true
});
有没有人遇到过这个?我正在使用C#。
更新 下面的代码是向前迈出的一步我现在正在返回一个数组,但我认为我在页面上处理错了。
var emailList = "http://localhost/BetterTaskList/Account/RegisteredUsersEmailList";
$("#TaskEmailNotificationList").autocomplete(emailList, {
multiple: true,
mustMatch: false,
multipleSeparator: ";",
autoFill: true
});
[HttpGet]
public ActionResult RegisteredUsersEmailList()
{
BetterTaskListDataContext db = new BetterTaskListDataContext();
var emailList = from u in db.Users select u.LoweredUserName;
return Json(emailList.ToList(), JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:2)
首先,您的语法与我以前的语法不同。如果您正在使用属于jQuery UI的自动完成小部件,那么自动完成语法是这样的:
$("#input1").autocomplete({
source: "http://localhost/Whatever"
});
所以也许你没有使用jQuery UI中包含的自动完成功能?
万一你......
根据{{3}},来源可以是三件事之一;数组,字符串(URL)或函数。如果它是一个数组,它可以是对象或单词。如果是对象,则每个对象都应该公开label
或value
属性或两者。
如果是URL,则应返回符合其中一种数组格式的JSON。例如,它应该返回
[ "albatross", "bison", "cayman", "duck", ...]
或
[ { "label": "albatross", "value": "72" },
{ "label": "bison", "value": "24" },
...
]
您很可能正在检索不符合上述格式之一的内容。