Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax函数停止加载屏幕_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript Ajax函数停止加载屏幕

Javascript Ajax函数停止加载屏幕,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个delete函数,它从服务器端数据表中删除一个条目。其目的是当我通过复选框选择几个项目并按delete键时,调用我的函数时会出现一个加载屏幕。一旦项目的数量被正确删除,加载应该消失 然而,当所有项目被正确删除后,加载屏幕并没有消失。我希望有人能看到我在这方面出了什么问题。多谢各位 Ajax代码 function deleteDocumentPrepare(){ var delCounter = 0; if(checked!==null){ $('.loading'

我有一个delete函数,它从服务器端数据表中删除一个条目。其目的是当我通过复选框选择几个项目并按delete键时,调用我的函数时会出现一个加载屏幕。一旦项目的数量被正确删除,加载应该消失

然而,当所有项目被正确删除后,加载屏幕并没有消失。我希望有人能看到我在这方面出了什么问题。多谢各位

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('/');?>";
            }
        }
    });
}
函数deleteDocumentPrepare(){
var-delCounter=0;
如果(选中!==null){
$('.loading').show();
$。每个(选中,函数(键,值){
//控制台。日志(已检查。长度);
deleteDocument(值、delCounter、checked.length);
delCounter++;
//控制台日志(delCounter);
});
}
}
功能删除文档(输入、当前、总计){
//console.log(“当前:+当前”);
//控制台日志(“总计:+total”);
变量id=输入;
$.ajax({
方法:“张贴”,
url:“”,
成功:功能(数据){
如果(“=”支持“){
var url='';
}否则{
var url='';
}
如果(数据==true){
$.ajax({
类型:'POST',
url:url,
数据:'id='+id,
beforeSend:函数(){
//$('.loading').show();
},
成功:功能(结果){
如果(当前==总计){
//控制台日志(“结束”);
$('.loading')。淡出(“慢速”);
选中=[];
table.draw();
}
}
});
}否则{
window.location.href=“”;
}
}
});
}

出现此问题是因为元素索引和找到的元素长度之间存在差异,所以

if(current==total){}
代码中的此条件将始终为
false
,因为
lastIndex==length-1
。在这种情况下,条件必须是

if(current==total - 1){}

加载屏幕隐藏在哪里?到达那行代码了吗?若否,原因为何?当您逐步使用浏览器的调试器时,行为与您期望的有何不同?ajax功能完成后,加载屏幕将隐藏。这是预期的操作,当您调试时,它在哪里失败?它在if(current==total)行失败。即使值与参数匹配,它也不会输入它。我认为,您应该在AJAX数据中发送
current
total
,然后从请求中再次发送它们。您将在
result
中收到这些值,并发布您可以进行检查的帖子。啊,您的为我工作。我真不敢相信我忽略了这样的事情,5分钟过后我会把它标记为正确的。非常感谢。对这件事有了新的认识:-)