我正在将JQuery UI的自动完成窗口小部件与JSON远程源一起使用。例如,如果我输入“ 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 }
]
}
...要求我转到第三个元素“ tagcounts”处的数组,并收集字符串“ tag”的值,然后返回这些值的数组。当然,最明智的解决方案是将函数更改为可以自动完成的格式,但是我想学习如何使用JQuery编写解析函数来更改返回的JSON数组的格式,即:
.autocomplete({
source: function(request, response) {
$.getJSON("myURL", { term: 'ba' }, function(data) {...});
},
...
});
如何创建一个“成功”函数(数据),该函数将为我提供自动完成所需的所需数组?任何提示,建议和代码示例将不胜感激,事实证明,在网上搜索比我想象的要困难得多。我遇到的一个特殊问题是,我看到的大多数成功函数只是输出到控制台或创建HTML元素,我需要它返回一个值(JSON数组),该值将用作我的源函数的“响应” 。
要使自动完成功能正常工作,您需要进行设置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
};
}))
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句