2017-08-01 79 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