我正在尝试在我的AJAX中添加一个非常简单的加载GIF.我使用this GIF动画.但是,GIF只移动0.5-1s.然后,10秒后显示AJAX数据.
$('#btn_src').on('click', function (e) {
$('.loading').show();
$.ajax({
type: "POST",
url: "some_function",
async: true,
cache: false,
dataType: "json",
data: 'some_var',
success: function (data) {
//some data from AJAX success call.
},
complete: function () {
$('.loading').hide();
$('#myModal').modal('show'); //This is a modal to display the data from AJAX
}
});
});
当前的AJAX有这种行为:
>显示GIF
> GIF在移动0,1-1后停止
> 10秒后显示弹出窗口. (所以,在我看到弹出之前.我的屏幕上有一个冻结的GIF).
我的期望是:
>显示GIF
> GIF继续移动(只要收集数据所需的秒数为1秒)
>隐藏GIF
>显示弹出窗口
解决方法:
问题似乎是浏览器在处理数据时无法使微调器旋转.首先,您需要测试并评论成功的全部内容.如果微调器不会冻结,那意味着数据的绝对大小不是造成这个ui故障的原因,而是解析.在这种情况下,您可能希望修改您的计划以将解析作业分成块并在一点点之间一点一点地调用它们以允许浏览器使用setInterval处理ui,但是当作业是时,不要忘记调用clearInterval完成.如果问题在于数据的庞大规模,那么您将不得不接受此行为或将响应分成数据包并使用setInterval发送请求,直到没有更多数据包要接收为止.