我正在使用BlockUI和jQuery阻止对某个页面的访问,因为某些操作可能需要一段时间才能在服务器上执行(它执行多个数据库查询但这并不重要)。这些操作大多是快速执行的,并且时不时地需要几秒钟。为了避免不安。闪烁:
是否有可能: - 启动ajax请求以执行操作 - 无形地阻止UI - 如果在500毫秒(一个设置)后答案不存在,重新阻止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 } );
}
} );