我有一个复选框,检查它会触发对服务器的长时间调用。我希望在用户等待呼叫时显示旋转的.gif图像,但图像未显示。以下是我的代码段:
$('#chk').click(function () {
$('span.progress-indicator').show(); //the gif image
$.ajaxSetup({ asynch: false});
LongServerCallMethod();
$('span.progress-indicator').hide(); //the gif image
});
答案 0 :(得分:2)
将long方法调用放在setTimeout中,允许浏览器首先渲染gif。但是,您会注意到,由于浏览器被异步调用锁定,因此微调器不会旋转。解决这个问题的唯一方法是不使用async: false
。
setTimeout(function(){
LongServerCallMethod();
$('span.progress-indicator').hide(); //the gif image
},0);
如果你有时间,你真的应该重写代码以不使用async: false
,因为时间是唯一可能阻止你将async: false
代码转换为async: true
的东西}