javascript中的简单自动完成函数

javascript中的简单自动完成函数,javascript,jquery,json,jquery-ui,Javascript,Jquery,Json,Jquery Ui,我正试图获得一个简单的自动完成功能的工作基础上的用户名,第三方应用程序提供 应用程序以这种通用格式输出数据: "{ "UserA":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserA"}, "UserB":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/",

我正试图获得一个简单的自动完成功能的工作基础上的用户名,第三方应用程序提供

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

"{
"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中提取名称的循环可以如此简单

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

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

由于返回的值似乎是一个
json
字符串,请尝试
json.parse(data)
使其成为普通的
对象
?我在代码中的哪个位置可以找到它?在For循环中?当数据从服务返回给您时,请按照var response=JSON.parse(data)的思路执行操作,其中数据是从服务返回的数据。这将允许您像处理普通javascript对象一样操作json。在接收到数据后,如果由于json字符串前面和后面有额外的引号,isParsing不起作用,您将立即执行此操作。它不认为它是有效的。有没有办法去除这些?我实现了您所拥有的,但由于某种原因,我现在的脚本“Uncaught TypeError:Cannot read property'length'of undefined”出现了问题。当我从控制台查看变量时,我也在读取undefined。@FrankEdgar您能分享一下您的问题吗。从json生成的源数组u似乎有一些问题。您是否将数组名更改为实际变量…可能是因为它导致了未定义的错误此解决方案是正确的。我试图将JSON字符串传递到其作用域之外,这在整个事件中添加了一组“”。如果我在生成它的循环中处理它,然后将处理后的数组传递给我的autocomplete函数,它就会工作。谢谢你,先生。