如何在Laravel中使用Ajax显示多个数据

时间:2018-08-07 03:41:41

标签: php ajax laravel laravel-5.2

我想在视图中显示多个数据,该数据取决于其他数据。例如,我想显示一个父组名,然后显示其子组,然后再显示下一个父级,然后显示其子级。我很困惑该怎么做。我为此使用了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和一个包含该父元素的子元素的数组,然后返回该自定义类的对象数组以供查看。

1 个答案:

答案 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); 
    }});
}