Javascript 在async设置为false时,显示加载程序,直到ajax jquery函数忙于执行为止

Javascript 在async设置为false时,显示加载程序,直到ajax jquery函数忙于执行为止,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我想在ajax jquery函数忙于执行其代码行之前显示loader,直到现在我才开始工作,但我不知道当async设置为false时,jquery函数何时完全完成了它的执行。在下面的代码中,我添加了complete function部分,该部分在ajax函数完全执行之前执行,因此看起来系统已经挂起,所以我需要显示一个加载程序,直到ajax函数执行为止。请帮助解决此问题。谢谢 <script> $.ajax({ type:'GET', url: 'get_record.

我想在ajax jquery函数忙于执行其代码行之前显示loader,直到现在我才开始工作,但我不知道当async设置为false时,jquery函数何时完全完成了它的执行。在下面的代码中,我添加了complete function部分,该部分在ajax函数完全执行之前执行,因此看起来系统已经挂起,所以我需要显示一个加载程序,直到ajax函数执行为止。请帮助解决此问题。谢谢

<script>
$.ajax({
    type:'GET',
    url: 'get_record.php',
    dataType:'json',
    async: false,
    success:function(result){
        var mainDiv = $('#main_outer');

        $.each(result, function(key,value) {
            var box_wrapper = $('<div>').addClass('boxwrapper').appendTo(mainDiv);
        });
    },
    beforeSend: function(){
         $('.loader').show();  
    },
    complete: function(){
        var everythingLoaded = setInterval(function() {
            clearInterval(everythingLoaded);
            setInterval(function () { $('.loader').hide(); }, 2500);  
        }, 10);
    }  
});
</script>

$.ajax({
类型:'GET',
url:'get_record.php',
数据类型:'json',
async:false,
成功:功能(结果){
var mainDiv=$('main#u outer');
$。每个(结果、函数(键、值){
var box_wrapper=$('').addClass('boxwrapper').appendTo(mainDiv);
});
},
beforeSend:function(){
$('.loader').show();
},
完成:函数(){
var everythingLoaded=setInterval(函数(){
clearInterval(已加载的所有内容);
setInterval(函数(){$('.loader').hide();},2500);
}, 10);
}  
});

async:false
不应该被使用,因为这是一种糟糕的做法,而且浏览器也不赞成使用它。您应该在控制台中看到有关此设置间隔(…clearInterval(…)…)的警告。=
setTimeout(…)
:您应该使用
setTimeout
而不是
setInterval
。。。。和@charlietfl说的一样。系统将挂断,因为这是一个同步请求。删除
async:false
如果我不使用async:false,那么有时候ajax请求不会完全加载,因此我在每个循环中动态创建的元素不会完全创建。。。那么,它的替代解决方案是什么呢?您不能将
$('.loader').hide()添加到
success:function(result){}
块中吗?或者我误解了你的目标是什么?我认为你应该把
$('.loader').hide()
放在
$之后。每个(结果..等)
块。无论
async:true
async:false
如何,这都会在加载完成后隐藏加载。但是您应该明确地找到一种方法,避免像其他人所说的那样使用
async:false