使用jQuery.getJSON成功函数更改JSON结果

格伦·马扎(Glen Mazza)

我正在将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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章