页面当中有一个DIV,而这个DIV里面的内容都是通过AJAX异步获取的,有多数据就显示多少数据,而且是一个递归的方式,有父子孙三部分内容,而且这上部分的内容是没有按照顺序一个个显示出来的,关键是访问数据的原因,但是现在有个需求,需要去判断异步记载 数据什么时候结束?
   问大侠们:异步加载的递归数据 要怎么判断其已经数据加载完用JS实现,JS有没有什么监听函数,注意数据是递归出来的?

解决方案 »

  1.   

    我曾经做过类似的,实际上我在后台做了控制,输出节点的时候每个节点都带了下一个要递归的节点地址,当AJAX调用这个节点后根据其所带的节点地址是否为空来判断递归是否结束。
      

  2.   

    看你的描述.你这应该是个树.. 你为什么不按需加载呢??? 为什么要一下子全读出来?ajax的意义何在?
      

  3.   


    <div id="container">
    </div>
    <button onclick="test();">-------测试-------</button>
    <script>
    var data=[
              {
              self:{name:'aaaa1'},
              children:
                      [
                       {
                        self:{name:'bbbb1'},
                        children:
                                [
                                 {
                                 self:{name:'cccc1'},
                                 children:[]                   
                                 },
                                 {
                                 self:{name:'cccc2'},
                                 children:[]
                                 }
                                ]
                       },
                       {
                        self:{name:'bbbb2'},
                        children:
                                [
                                 {
                                 self:{name:'cccc3'},
                                 children:[]                   
                                 },
                                 {
                                 self:{name:'cccc4'},
                                 children:[]
                                 }
                                ]
                       }
                      ]
              },
      {
              self:{name:'aaaa2'},
              children:
                      [
                       {
                        self:{name:'bbbb3'},
                        children:
                                [
                                 {
                                 self:{name:'cccc5'},
                                 children:[]                   
                                 },
                                 {
                                 self:{name:'cccc6'},
                                 children:[]
                                 }
                                ]
                       },
                       {
                        self:{name:'bbbb4'},
                        children:
                                [
                                 {
                                 self:{name:'cccc7'},
                                 children:[]                   
                                 },
                                 {
                                 self:{name:'cccc48'},
                                 children:[]
                                 }
                                ]
                       }
                      ]
              }
             ];
    //alert(data.length);
    var content = document.getElementById('container');
    function iterator(temp,level){
        level++;
        for(var j=0;j<temp.length;j++){
           var obj = temp[j];
           if(obj.self){
              var plus="";
              for(var i=0;i<level;i++){
                  plus+="+";
              }
              ///alert(obj.self.name+content+"===="+obj.children.length);
              content.innerHTML+=plus+obj.self.name+"<br>";
      ///alert(obj.self.name+"===="+obj.children.length);
      iterator(obj.children,level);
           }
        }
    }
    function test(){
    content.innerHTML="";
    iterator(data,0);
    }
    </script>
    <div>
    如果把数据做成DOM一样不就可以递归处理,后台把数据做成JSON格式的数据,脚本也使用JSON,然后再写一个迭代function,比如说后台格式返回到页面上是这样的
    按照这种格式就可以迭代了,当然key要换成一样的名子
    </div>