Jquery 如何在列表中用一个ajax调用返回列表填充两个下拉列表
这可能听起来或看起来像是已经被问过了。 但不同的是,我在列表中有一个ajax调用返回列表,一个是父列表,子列表在其中,现在我想根据父下拉选择框的选定值填充子列表下拉列表 这是我的密码Jquery 如何在列表中用一个ajax调用返回列表填充两个下拉列表,jquery,Jquery,这可能听起来或看起来像是已经被问过了。 但不同的是,我在列表中有一个ajax调用返回列表,一个是父列表,子列表在其中,现在我想根据父下拉选择框的选定值填充子列表下拉列表 这是我的密码 function populateViolationDropDown() { $.ajax({ type: "POST", url: "/controller/getVio
function populateViolationDropDown() {
$.ajax({
type: "POST",
url: "/controller/getViolations",
data: "{}",
dataType: 'json',
success: function (data) {
console.log(data);
$('#ViolationTypeID').empty();
data.forEach(function (e, i) {
$('#ViolationID').append($('<option></option>').val(e.ViolationID).text(e.Description));
});
}
});
}
正如您所看到的,我现在有违规和子违规列表,我想根据违规下拉列表中选择的值填充子违规下拉列表
是的,我可以发送另一个ajax调用,并传递违规类型id和获取子违规,但我想在一个ajax调用中实现这一点,我已经从控制器中获取了数据,如图所示,但想不出任何逻辑如何根据违规下拉列表中选择的值填充子违规下拉列表使用常规的$.ajax,它还返回一个承诺,并允许使用then而不是success
在中,然后将响应数据存储在populateViolationDropDown中的变量中,以允许使用Arrayfind获取关联的子冲突
$.fakeAjax==>{
返回新的承诺者,rej=>{
再违规数据;
};
};
populateViolationDropDown
函数populateViolationDropDown{
let violationData;//在ajax完成后存储数据
常量$violSelect=$'ViolationID',
$subViolSelect=$'SubViolationID';
const请求=$.fakeAjax{
类型:'POST',
数据类型:'json',
数据:{}
}
请求函数数据{
violationData=data;//存储数据
const violationOptions=mapOptions“违规”,数据;
$violSelect.htmlviolationOptions
}.catcherr=>console.log'Ooops请求失败';
$violSelect。关于“更改”,函数e{
const violationId=Numberthis.value;
const violationObj=violationData.findfunction o{
返回o.ViolationID===ViolationID
};
const subViolOptions=mapOptions'subviolations',violationObj.SubViolationList;
$subViolSelect.htmlsubViolOptions;
}
}
//用于从数组创建元素的助手函数
函数映射选项类型,arr{
const opts=arr.mapfunctiono{
const id=type==‘违规’?o.ViolationID:o.SubViolationID;
返回新选项o.说明,id
};
opts.unshiftnew选项'-'+类型+'-',;
返回选项
}
const violationData=[
{
违例事项d:1,,
描述:准时和规律,
子违规列表:[
{SubViolationID:1,Description:出现在您的测试中},
{次违例ID:2,描述:参加考试},
{次违例ID:3,说明:按时完成作业}
]
},
{
违例事项d:2,,
说明:个人外表和健康习惯,
子违规列表:[
{子违例ID:4,描述:正确修剪头发},
{第5款,描述:抛光鞋},
{第6条,描述:干净的校服}
]
}
]
违规行为:
子冲突:请注意,当您发布数据以发布JSON格式的版本时,而不是从控制台复制的版本。控制台副本对运行代码无效,需要大量操作才能使其可用感谢详细的回答,也感谢提供运行代码段。返回新Promisers中未定义其给定异常violationdata,rej=>{resviolationData;
0:
Description: "Punctuality and Regularity"
SubViolationList: Array(3)
0: {SubViolationID: 1, Description: "Appearing For Your Tests"}
1: {SubViolationID: 2, Description: "Appearing For Your Exams"}
2: {SubViolationID: 3, Description: "Homework On Time"}
length: 3
__proto__: Array(0)
ViolationID: 1
__proto__: Object
1:
Description: "Personal Appearance and Healthy Habits"
SubViolationList: Array(3)
0: {SubViolationID: 4, Description: "Hair Properly Cut"}
1: {SubViolationID: 5, Description: "Polished Shoes"}
2: {SubViolationID: 6, Description: "Clean School Attire"}
length: 3
__proto__: Array(0)
ViolationID: 2
__proto__: Object
2: {ViolationID: 3, SubViolationList: Array(3), Description: "Mannersand Courtesy"}
3: {ViolationID: 4, SubViolationList: Array(3), Description: "Interpersonal and CommunicationSkills"}