问题:
用dwr技术查询海量数据时,用户点击按钮,提交请求后,页面长时间没反应.问题反映到我这.当然除了要提高性能外,也得给用户一个提示,比如出现"正在加载数据.."的提示.
解决办法:
如果要实现这种效果,就得在客户端用js判断加载情况,请求前是一种状态,请求后(后台处理,返回数据给前台)又是一种状态.
dwr工具包提供了两个函数,专门处理这两种情况:
(1) 请求前处理
DWREngine.setPreHook(jsfun)
在DWR调用之前设置执行一个函数(但是这个函数无参数),例如显示"正在加载数据.."信息
(2)请求后处理
DWREngine.setPostHook(jsfun) 在DWR调用之后要执行的函数.例如隐藏"正在加载数据.."信息
DWREngine.setPreHook(jsfun)在调用DWR之前,运行jsfun函数。DWREngine.setPostHook(jsfun)在调用完DWR后,运行jsfun函数。
当然我们可以用它来显示程序运行时的动画效果.
//====================================================================
//显示文字提示消息
function useLoadingMessage(message) {
var loadingMessage;
if (message) loadingMessage = message;
else loadingMessage = "Loading";
DWREngine.setPreHook(function() {
var disabledZone = $('disabledZone');
if (!disabledZone) {
disabledZone = document.createElement_x_x('div');
disabledZone.setAttribute('id', 'disabledZone');
disabledZone.style.position = "absolute";
disabledZone.style.zIndex = "1000";
disabledZone.style.left = "0px";
disabledZone.style.top = "0px";
disabledZone.style.width = "100%";
disabledZone.style.height = "100%";
document.body.appendChild(disabledZone);
var messageZone = document.createElement_x_x('div');
messageZone.setAttribute('id', 'messageZone');
messageZone.style.position = "absolute";
messageZone.style.top = "0px";
messageZone.style.right = "0px";
messageZone.style.background = "red";
messageZone.style.color = "white";
messageZone.style.fontFamily = "Arial,Helvetica,sans-serif";
messageZone.style.padding = "4px";
disabledZone.appendChild(messageZone);
var text = document.createTextNode(loadingMessage);
messageZone.appendChild(text);
}
else {
$('messageZone').innerHTML = loadingMessage;
disabledZone.style.visibility = 'visible';
}
});
DWREngine.setPostHook(function() {
$('disabledZone').style.visibility = 'hidden';
});
}
//====================================================================
//用图片显示动态效果
function useLoadingImage(imageSrc) {
var loadingImage;
if (imageSrc) loadingImage = imageSrc;
else loadingImage = "ajax-loader.gif";
DWREngine.setPreHook(function() {
var disabledImageZone = $('disabledImageZone');
if (!disabledImageZone) {
disabledImageZone = document.createElement_x_x('div');
disabledImageZone.setAttribute('id', 'disabledImageZone');
disabledImageZone.style.position = "absolute";
disabledImageZone.style.zIndex = "1000";
disabledImageZone.style.left = "0px";
disabledImageZone.style.top = "0px";
disabledImageZone.style.width = "100%";
disabledImageZone.style.height = "100%";
var imageZone = document.createElement_x_x('img');
imageZone.setAttribute('id','imageZone');
imageZone.setAttribute('src',imageSrc);
imageZone.style.position = "absolute";
imageZone.style.top = "0px";
imageZone.style.right = "0px";
disabledImageZone.appendChild(imageZone);
document.body.appendChild(disabledImageZone);
}
else {
$('imageZone').src = imageSrc;
disabledImageZone.style.visibility = 'visible';
}
});
DWREngine.setPostHook(function() {
$('disabledImageZone').style.visibility = 'hidden';
});
}
分享到:
相关推荐
ajax_dwr实现页面无刷新加载
ztree+dwr实现的异步加载树形菜单
使用dwr加载下拉框数据的小例子,通常在加载页面的同时将下拉框的信息一起加载
问题: 用dwr技术查询海量数据时,用户点击按钮,提交请求后,页面长时间没反应....如果要实现这种效果,就得在客户端用js判断加载情况,请求前是一种状态,请求后(后台处理,返回数据给前台)又是一种状态.
DWR框架的实现DWR框架的实现DWR框架的实现DWR框架的实现DWR框架的实现
本实例是在一些网络资料的基础上整合出来的一个:以后台向前台页面推送消息的一个完整实例工程,采用了spring、dwr反转,实现的是后台向前台不断推送消息,并管理相关用户退出;可以用在如定时任务的桌面消息提醒之...
dwr实现ajax功能ajax+dwr.........................
ajax框架dwr实现的页面无刷新分页效果,jsp技术
Ajax(DWR实现例子) Ajax(DWR实现例子) Ajax(DWR实现例子) Ajax(DWR实现例子) Ajax(DWR实现例子) Ajax(DWR实现例子)
你只需要准备好一张加载提示时需要显示的图片,最好是gif格式的。然后在js里调用。
dwr实现无刷新分页dwr实现无刷新分页dwr实现无刷新分页dwr实现无刷新分页dwr实现无刷新分页dwr实现无刷新分页dwr实现无刷新分页dwr实现无刷新分页
DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让AJAX变得很简单,通过DWR可以在客户端通过JavaScript直接调用服务器的Java方法并返回值给JavaScript,整个过程就好像通过本地客户端调用一样,...
用数据库缓存池和dwr实现的jsp程序数据库缓存池和dwr实现的jsp程序
使用DWR实现服务器端向客户端精确推送消息
基于DWR技术实现数据服务器推送,java版本DEMO,无刷新实现前台页面数据实时获取
dwr实现无页面跳动的刷新,里面有个线程,更改数据库数据,先启动线程,再发布工程
利用DWR实现文件上传进度条 利用DWR实现文件上传进度条 利用DWR实现文件上传进度条
SSH CRM项目DWR入门源码(4)通过DWR实现动态树源码(5) var sjzdflArr; DWREngine.setAsync(false); SjzdflDAO.findAll(load); DWREngine.setAsync(true); function load...
DWR实现AJAX验证实例,通过输入的数查询数据库字段是否存在。在前台显示。eclips实现。
register(dwr实现用户注册) register(dwr实现用户注册) register(dwr实现用户注册)