当某些操作可能需要一些时间才能在服务器上执行时(它执行多个数据库查询,但这并不重要),我正在使用 BlockUI 和 jQuery 来阻止对页面的访问。这些动作大多是快速执行的,并且时不时地需要几秒钟。以免不顺。闪烁:
是否可以: - 启动 ajax 请求以执行操作 - 不可见地阻止 UI - 如果 500 毫秒(设置)后没有答案,请重新阻止 UI,现在变灰等 - 完成后/出错时,取消阻止 UI。
我应该如何做这样的事情,或者我应该做不同的事情,还是有另一个插件可以开箱即用地执行这个?
目前我使用以下代码来生成效果:
DoRequest = function( param, name ) {
$.blockUI( { message: null, fadeIn: 0, fadeOut: 0, overlayCSS: { opacity: 0.0 } } );
blockUIPhase1 = setTimeout( function(){
$.unblockUI( { fadeOut: 0 } );
$.blockUI( { message: "Even geduld a.u.b.", overlayCSS: { opacity: 0.0 } } );
}, 1000 );
$.ajax( {
url: "screen.json",
dataType: 'json',
success: function( data ) {
// ....
},
complete: function() {
if ( blockUIPhase1 != undefined ) clearTimeout( blockUIPhase1 );
$.unblockUI( { fadeOut: 0 } );
}
} );