【问题标题】:Simple auto-completion function in javascriptjavascript中的简单自动完成功能
【发布时间】:2015-07-01 18:51:35
【问题描述】:

我正在尝试根据 3rd 方应用程序提供的用户名来获得一个简单的自动完成功能。

应用以这种通用格式输出数据:

"{
"UserA":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserA"},
"UserB":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserB"},
"UserC":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserC"}
}"

现在,我想使用下面列出的通用自动完成功能:

$("#chatEntryBox").autocomplete({
    source: usersOnline.Name
});

我已经这样定义了数组:

OnlineUsers = data.userinfo;

for (var i in OnlineUsers) {
  var user = OnlineUsers[i];
  usersOnline = $.map(OnlineUsers, function(el) { return el; })
}

现在,上面的这部分按我预期的方式工作。我可以通过 JSON.stringify(usersOnline[0].Name); 在控制台中测试数组的值是什么

我查看了 Jquery 网站上的文档......我只是觉得我遗漏了一些东西或误解。如果有人能指出我正确的方向,那就太好了。

最终目标是输入用户名的前几个字母,然后自动完成其余部分。

【问题讨论】:

  • 由于返回的值似乎是json 字符串,尝试JSON.parse(data) 使其正常object
  • 在我的代码中哪里可以找到它?在 For 循环中?
  • 当数据从服务返回给您时,请按照 var response = JSON.parse(data) 的行做一些事情,其中​​数据是从服务返回的数据。这将允许您像普通的 javascript 对象一样操作 json。无论在哪里,您都可以在收到数据后立即执行此操作
  • 解析不起作用,因为 json 字符串的前后有多余的引号。它没有将其视为有效。有没有办法把它们去掉?

标签: javascript jquery json jquery-ui


【解决方案1】:

我为你的问题做了一个小提琴here

从json中取出名字的循环可以这么简单

var usersOnline = $.map(input, function(el) { return el.Name; })

$( "#chatEntryBox" ).autocomplete({
    source: usersOnline
});

【讨论】:

  • 我实现了你所拥有的,但由于某种原因,我现在遇到了我的脚本“未捕获的类型错误:无法读取未定义的属性‘长度’”的问题,当我查看时我也在阅读未定义来自控制台的变量。
  • @FrankEdgar 你能分享一下你的问题吗?似乎你从 json 形成的源数组有一些问题。您是否将数组名称 更改为您的实际变量...可能是导致您未定义的错误
  • 这个解决方案是正确的。我试图将 JSON 字符串传递到其范围之外,这为整个事物添加了一组“”。如果我在生成它的循环中处理它,然后将处理后的数组传递给我的自动完成函数,它就可以工作。谢谢先生。
猜你喜欢
  • 2017-10-06
  • 2014-09-15
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2020-04-23
  • 2022-08-15
  • 2011-09-04
相关资源
最近更新 更多