我有像这样的格式一些JSON:选择嵌套的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)
})
}
})
}
我的修订是将它添加到更改功能来填充发布者(就没有得到如标题,因为这没有工作,开始与) :
$('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');
})
我首先想到的是,这是由于这一事实,这是我的AJAX请求中 - 这可能是不理想的,但它是通过传递JSON。 但是,当我再次通过游戏类型时,它工作。
所以我认为我的问题是,发布者依赖于标题,而我的代码不知道要返回哪个发布者。我看着变量,但没有工作,不知道从哪里去。
任何意见表示赞赏。
- 编辑 -
我加入[0]
我真正得到返回的数据,是有道理的改变
var getPublisher = _.pluck(info.games[0].gameType, 'publisher');
所以,但是开始这很难在编码,我希望它是根据变化在前面的下拉菜单中。
没有人能够提供建议吗? – Hagbard
将JSON数据传递给map的迭代器函数。这样,你的内在功能可以处理选择。我会尽量在一段时间内写出正式的答案。 – varagrawal