1

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

1 回答 1

2

首先,您的语法看起来与我习惯的不同。如果您正在使用作为 jQuery UI 一部分的自动完成小部件,那么自动完成语法如下所示:

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

那么也许您没有使用 jQuery UI 中包含的自动完成功能?

如果你是......
根据jQuery UI autocomplete 的文档,源可以是三件事之一;数组、字符串 (URL) 或函数。如果它是一个数组,它可以是对象或单词。如果是对象,那么每个对象都应该公开一个label或一个value属性或两者。

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

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

或者

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

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

另见,这个答案

于 2010-03-11T01:26:11.890 回答