Javascript 选择嵌套JSON对象并填充下拉列表

Javascript 选择嵌套JSON对象并填充下拉列表,javascript,jquery,json,backbone.js,drop-down-menu,Javascript,Jquery,Json,Backbone.js,Drop Down Menu,我有一些JSON格式如下: "games": [{ "gameType": "RPG", "publishers": [{ "publisher": "Square", "titles": [{ "title": "Final Fantasy", "gameReleases": [ 2006, 2008, 2010, 2012, 2013, 2014 ] }] }] }] 我

我有一些JSON格式如下:

"games": [{
    "gameType": "RPG",
    "publishers": [{
        "publisher": "Square",
        "titles": [{
            "title": "Final Fantasy",
            "gameReleases": [ 2006, 2008, 2010, 2012, 2013, 2014 ]
        }]
    }]
}]
我有一个下拉菜单,允许用户选择游戏类型,并将填充另一个下拉菜单。 因此,如果用户从下拉列表中选择RPG,则发布者下拉列表将显示“Square”,当用户选择Square时, 标题下拉列表将显示“最终幻想”,当选择最终幻想时,日期范围将在相关下拉列表中选择

目前我的游戏类型下拉列表加载良好,问题在于填充后续下拉列表。这是我填充第一个下拉列表的代码:

profileSelected: function () {
    var myUrl = "webapp/jsonaccount=" + accountcode;
    $.ajax({
        url: myUrl,
        type: "POST",
        dataType: "text",
        success: function(data) {
            var info = JSON.parse(data); //parse the returned data
            var getType = _.pluck(info.games, 'gameType'); //select the game types from the JSON
            var prepareType = _.map(getType, function(val){ return '<option>'+val + '</option>';}).join(); //create the to be added to the combobox

            $('select#gameTypeCombo').html(prepareType).selectpicker('render'); //render the box
            $('select#gameTypeCombo').selectpicker('refresh'); //refresh the box
            $('select#gameTypeCombo').on('change', function() { //when gameType is chosen do this
                //Populate publisher based on GameType: (select#publisher)
                // When publisher is selected populate Titles: (select#gameTypeCombo)
                // When titles is selected populate gameReleases: (select#releaseDates)
            })
        }
    })
}

因此,通过添加
[0]
我实际上得到了返回的数据,这是有意义的,但是要开始硬编码,我希望它是可变的,取决于前面的下拉列表

我已经设法解决了你的问题

在适当地填充数据之后,这都是一系列嵌套的
.change()
函数调用。如果您需要了解帮助器函数的帮助,我将添加注释。:)

您可以在这里查看:


请原谅格式不好。您可以将JS复制到您最喜欢的文本编辑器中,并验证正在执行的操作。希望有帮助。

没有人能提供建议?将JSON数据也传递到map的迭代器函数中。这样,您的内部函数可以处理选择。过一会儿我会试着写一份正式的答复。
$('select#gameTypeCombo').on('change', function() {
    var getPublisher = _.pluck(info.games.gameType, 'publisher');
    var preparePublisher = _.map(getPublisher, function(val){ return '<option>' + val + '</option>';}).join();  
    $('select#publisher').html (preparePublisher).selectpicker('render');                          
})
var getPublisher = _.pluck(info.games[0].gameType, 'publisher');