代码之家  ›  专栏  ›  技术社区  ›  Geovani Martinez

jquery自动完成插件调用

  •  1
  • Geovani Martinez  · 技术社区  · 14 年前

    当我使用jquery的autocomplete并对页面中的数组值进行硬编码时,它工作得非常好;但是我需要做的是从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 回复  |  直到 11 年前
        1
  •  2
  •   Community Lee Campbell    7 年前

    首先,你的语法看起来和我习惯的不一样。如果您使用的是jquery ui中的autocomplete小部件,那么autocomplete语法如下:

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

    所以,您可能没有使用jquery ui中包含的自动完成功能?

    如果你是…
    根据 the documentation for jQuery UI autocomplete ,源可以是以下三项之一:数组、字符串(url)或函数。如果是数组,则可以是对象或单词。如果是对象,则每个对象都应公开 label ,或者 value 财产或两者兼有。

    如果它是一个url,那么它应该返回符合数组格式之一的json。它应该会回来

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

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

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

    也见 this answer