我正在使用带有autocomplete的JQuery UI JSON remote source小部件。如果我输入" ba"例如,自动完成需要一个字符串数组,例如[" bat"," banana"," band"," bar"]。但是,我获取此信息的远程函数非常复杂,它返回如下内容:
{ "prefix": "ba",
"weblog": "gmazza",
"tagcounts": [
{ "tag" : "bat", "count" : 2 },
{ "tag" : "banana", "count" : 1 },
{ "tag" : "band", "count" : 1 },
{ "tag" : "bar", "count" : 1 }
]
}
...要求我去第三个元素"标记"并收集字符串"标记"的值并返回这些值的数组。当然,最明智的解决方案是将该功能更改为自动完成可直接使用的格式,但我想学习如何使用JQuery编写解析函数来更改返回的JSON数组的格式,即,为:
.autocomplete({
source: function(request, response) {
$.getJSON("myURL", { term: 'ba' }, function(data) {...});
},
...
});
我如何创造成功"函数(数据)将给我自动完成所需的数组?任何提示,建议和代码示例都会受到赞赏,这比我想象的更难以搜索网络。我遇到的一个特殊问题是,我看到的大多数成功函数只是输出到控制台或创建HTML元素,我需要它返回一个值(JSON数组),它将被用作"响应&# 34;以上是我的源函数。
答案 0 :(得分:0)
要使自动填充工作正常,您需要设置label
并且它是相应的value
。因为你有以下格式的JSON,
{ "prefix": "ba",
"weblog": "gmazza",
"tagcounts": [
{ "tag" : "bat", "count" : 2 },
{ "tag" : "banana", "count" : 1 },
{ "tag" : "band", "count" : 1 },
{ "tag" : "bar", "count" : 1 }
]
}
我相信tagcounts.tag
必须是label
,而且价值我不知道。
因此,请在自动填充的source
中使用此内容,
source: function (request, response) {
$.getJSON("myURL", { term: 'ba' }, function(data) {
response($.map(data.tagcounts, function (dataValue) {
return {
//Display label
label: dataValue.tag,
/autocomplete value
value: dataValue.tag
};
}))
});