2007年3月14日星期三

无闪烁刷新页面

受"script调用asp实现过程"一文启发,现将jsp无闪烁刷新页面实现。当然使用ajax才是最佳解决手段,不过,使用javascript同样可以实现简单的页面部分更新功能。其主要原理为通过js来调用后台的jsp代码,从而实现页面与后台的交互,js作用的范围为页面的某一部分,这样就无需提交整个页面到后台处理,即实现了页面的部分刷新。为了正确显示,示例代码中一些关键字被分割开了,为了正确运行代码,你需要将代码中的"<#"替换为"<",将"#>"替换为">"。
JS调用后台程序方法如下:
<#script language="javascript" src="xxx.asp?borid=5"><#/script>


下面是一个调用的简单示例,html文件如下:
<#html#>
<#body#>
<#script language="javascript" type="text/javascript"#>
function fnNoFlashRefresh(no) {
//无闪烁刷屏(部分页面刷新)
document.scripts[1].src = "dy.jsp?num="+no;
// alert(no);

}
<#/script#>
页面刷新部分(freshDiv部分):
<#div id="freshDiv"#>
<#/div#>
<#script language="javascript" src="dy.jsp?num=1"#><#/script#>
<#br#><#a href="javascript:fnNoFlashRefresh(1)"#>刷新1<#/a#>(通过javascipt调用后台页面)
<#br#><#a href="javascript:fnNoFlashRefresh(2)"#>刷新2<#/a#>(通过javascipt调用后台页面)
<#/body#>
<#/html#>


dy.jsp为被调用的jsp页面,如下:

<#%
//-------做为直接由js调用的jsp页面,页面输出部分必须完全符合javascript规范来编写
String num = (String) request.getParameter("num");
String paraStr = "";
if (num != null && num.equals("1")) {
paraStr = "调用了后台jsp页面,根据参数,输出:111111";
} else {
paraStr = "调用了后台jsp页面,根据参数,输出:222222";
}
String outStr = "document.getElementById(\"freshDiv\").innerText = \"" + paraStr + "\"";
out.println(outStr);
%#>


在上述页面的基础上,如果再加上定时器,就可以实现定时刷新部分页面的功能,类似的实现有滚动新闻条、股票实时行情软件web版等。

没有评论: