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