Jquery AutoComplete插件调用

时间:2010-03-10 23:29:52

标签: jquery jquery-autocomplete

当我使用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);
    }

1 个答案:

答案 0 :(得分:2)

首先,您的语法与我以前的语法不同。如果您正在使用属于jQuery UI的自动完成小部件,那么自动完成语法是这样的:

$("#input1").autocomplete({
      source: "http://localhost/Whatever"
});

所以也许你没有使用jQuery UI中包含的自动完成功能?

万一你...... 根据{{​​3}},来源可以是三件事之一;数组,字符串(URL)或函数。如果它是一个数组,它可以是对象或单词。如果是对象,则每个对象都应该公开labelvalue属性或两者。

如果是URL,则应返回符合其中一种数组格式的JSON。例如,它应该返回

[ "albatross", "bison", "cayman", "duck", ...] 

[ { "label": "albatross", "value": "72" }, 
  { "label": "bison", "value": "24" }, 
   ...
]

您很可能正在检索不符合上述格式之一的内容。

另见the documentation for jQuery UI autocomplete