繁体   English   中英

jQuery UI自动完成-访问JSON中的嵌套对象

[英]jQuery UI Autocomplete - accessing nested objects in JSON

我正在尝试将jQuery UI自动完成小部件与自定义JSON提要结合使用,而该提要是从API返回的,其格式如下:

    {

    "SearchTerm": "ches",
    "HasDirectCountyHit": false,
    "DirectCountyHitId": null,
    "HasDirectLocationHit": false,
    "DirectLocationHitId": null,
    "Developments": [
        {
            "Id": "45339ae3e55a",
            "Label": "Chestnut Walk, Bilston",
            "Url": "/developments/chestnut-walk-bilston"
        },
        {
            "Id": "4835f52e053a",
            "Label": "Crown Park, Chester",
            "Url": "/developments/crown-park-chester"
        },
        {
            "Id": "757964964cc6",
            "Label": "The Birches, West Timperley",
            "Url": "/developments/the-birches-west-timperley"
        }
    ],
    "Counties": [
        {
            "Id": "7",
            "Label": "Cheshire",
            "Url": "/search?cid=7"
        },
        {
            "Id": "24",
            "Label": "Greater Manchester",
            "Url": "/search?cid=24"
        }
    ],
    "Locations": [
        {
            "Id": "12061",
            "Label": "Cheselbourne, Dorset (DT2 7)",
            "Url": "/search?lid=12061"
        },
        {
            "Id": "12062",
            "Label": "Chesham, Buckinghamshire (HP5 1)",
            "Url": "/search?lid=12062"
        },
        {
            "Id": "12063",
            "Label": "Chesham, Greater Manchester (BL9 6)",
            "Url": "/search?lid=12063"
        },
        {
            "Id": "12064",
            "Label": "Chesham Bois, Buckinghamshire (HP6 5)",
            "Url": "/search?lid=12064"
        },
        {
            "Id": "12065",
            "Label": "Cheshunt, Hertfordshire (EN8 9)",
            "Url": "/search?lid=12065"
        },
        {
            "Id": "12066",
            "Label": "Chesley, Kent (ME9 7)",
            "Url": "/search?lid=12066"
        },
        {
            "Id": "12067",
            "Label": "Cheslyn Hay, Staffordshire (WS6 7)",
            "Url": "/search?lid=12067"
        },
        {
            "Id": "12068",
            "Label": "Chessetts Wood, Warwickshire (B94 6)",
            "Url": "/search?lid=12068"
        },
        {
            "Id": "12069",
            "Label": "Chessington, Kingston upon Thames - Greater London (KT9 2)",
            "Url": "/search?lid=12069"
        },
        {
            "Id": "12070",
            "Label": "Chessmount, Buckinghamshire (HP5 1)",
            "Url": "/search?lid=12070"
        }
    ]

}

我正在调用的API根据搜索条件返回结果,所以我知道嵌套对象中的所有结果都是匹配的-我的问题是如何访问这些对象(“开发”,“县”和“位置”)以便自动完成小部件可以选择“标签”值?

谢谢罗宾

好的-这是您可以做的:

//put all the keys you want to pull out of your json in an array
var props = [
    "Locations", "Counties", "Developments"
];
//empty array for your autocomplete
var labels = [];

//loop thru all the properties you care about
$.each(props, function () {
    $.each(source[this], function () {
        //and pull out all the labels and add them to the labels array
        labels.push(this.Label)
    });
});


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

并查看其运行情况,我创建了一个快速提琴http://jsfiddle.net/fr5yb3n0/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM