2017-08-01 148 views
-1

我有一个删除功能,从服务器端数据表中删除一个条目。目的是当我通过复选框选择几个项目,然后按下删除,加载屏幕将出现,因为我的功能被称为。一旦项目数量被正确删除,加载应该消失。Ajax函数停止加载屏幕

但是,一旦所有项目都被正确删除,加载屏幕不会消失。我希望有人可以看到我的错在哪里。谢谢

Ajax代码

function deleteDocumentPrepare(){ 
    var delCounter = 0; 
    if(checked!==null){ 
     $('.loading').show(); 
     $.each(checked, function(key, value) { 
//   console.log(checked.length); 
      deleteDocument(value,delCounter,checked.length); 
      delCounter++; 
//   console.log(delCounter); 
     }); 

    } 
} 

function deleteDocument(input,current,total){ 
// console.log("current:"+current); 
// console.log("total:"+total); 
    var id = input; 
    $.ajax({ 
     method: "POST", 
     url: "<?php echo site_url('/Common/Check'); ?>", 
     success: function(data){ 
      if("<?php echo $this->data['controller'];?>"=="Support"){ 
       var url = '<?php echo site_url('Admin'.$this->data['controller'].'/Agent/Delete/'); ?>'; 
      }else{ 
       var url = '<?php echo site_url('Admin'.$this->data['controller'].'/Delete/'); ?>'; 
      } 
      if(data==true){ 
       $.ajax({ 
        type:'POST', 
        url:url, 
        data:'id='+id, 
        beforeSend: function() { 
//      $('.loading').show(); 
        }, 
        success:function(result){ 
         if(current==total){ 
//       console.log("END"); 
          $('.loading').fadeOut("slow"); 
          checked=[]; 
          table.draw(); 
         } 
        } 
       }); 
      }else{ 
       window.location.href="<?php echo site_url('/');?>"; 
      } 
     } 
    }); 
} 
+0

您在哪里隐藏加载屏幕?该代码行是否达到?如果不是,为什么不呢?当您逐步使用浏览器的调试器时,行为与您的期望有何不同? – David

+0

ajax函数完成后,加载屏幕将被隐藏。这是预期的行动 – JianYA

+0

而*当你调试*,它在哪里失败? – David

回答

0

此问题的出现是因为元素的索引,发现元素的长度之间的差异,所以

if(current==total){} 

代码中的这个条件将永远false因为lastIndex == length-1。并且在这种情况下,条件必须是

if(current==total - 1){} 
+0

阿你的为我工作。我不能相信我忽略了那样的东西 – JianYA

+0

5分钟后,我会将其标记为正确。谢谢! – JianYA

+0

只是一个新鲜的事物:-) – MysterX