我想在视图中显示多个数据,该数据取决于其他数据。例如,我想显示一个父组名,然后显示其子组,然后再显示下一个父级,然后显示其子级。我很困惑该怎么做。我为此使用了ajax调用,但是没有产生我想要的结果。
$.ajax({
url:'group/fetchparentgroups',
type:'get',
success:function(data,status){ //data is a json array object
//containing all the parent groups
for(key in data){
console.log(data[key].name);
ajaxFetchChildGroups(data[key].id,function(output){
console.log(output) });
}
}});
//the following function take a parent group id as parameter and
//return an array containing all the child of that particular parent
function ajaxFetchChildGroups(parent_group_id,handleData){
$.ajax({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-
token"]').attr('content') },
url:'group/fetchchildgroups',
type:'post',
data:{'id':parent_group_id},
success:function(data,status){
handleData(data);
}});
}
代码输出为
-第一个父组名称
第二个父组名称
-第一父母的孩子
-第一父母的孩子
但是应该
-第一个父组名称
-第一父母的孩子
第二个父组名称
-第二个父母的孩子
该代码中的问题是什么。或推荐另一种方法,通过发送数据到视图直接从控制器加载视图,然后我如何在控制器中创建此类数据,因为子代取决于父代,这意味着我必须遍历父代才能获得子代。
我应该为其创建一个自定义类,该类具有两个属性parent和一个包含该父元素的子元素的数组,然后返回该自定义类的对象数组以供查看。
答案 0 :(得分:0)
您应该将async添加到ajaxFetchChildGroups
function ajaxFetchChildGroups(parent_group_id,handleData){
$.ajax({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
url:'group/fetchchildgroups',
type:'post',
data:{'id':parent_group_id},
async:false,
success:function(data,status){
handleData(data);
}});
}