在项目中,经常会遇到页面分割,最常见的系统或网站的主界面。主页面分为,上面系统简介、下面作者简介、左边系统功能菜单、右边则是菜单真正展示的界面。

遇到这种这种分割页面,大家首先想到是frameset,使用framset分割多种frame,这种方式简单。若是不喜欢使用framset,喜欢前台设计的人也许会选择div拼接,浮动,这就考查css样式的功底了。
这次主要讲解局部刷新的问题。需求是:左边frame,右边frame。

大家肯定疑问,这样刷新没有问题啊。的确如此。现在使用framset,分割两frame,各自更新各自。右边frame展示菜单尽管更新提交即可。对左边frame是没有影响的。

为了方便理解,左边Frame简称LeftFrame,右边Frame简称RightFrame;假如我提交RightFrame页面,需要更新LeftFrame【动态】页面。那如何办呢?
其实就是从数据库中重新读数据;

 
lt;/FRAMESET>

其中modifyMenu!showTreeMenu是转向到tree.jsp页面
现在项目中,前台使用struts2,当提交右边页面数据时,当时设想:然后再次跳转到主界面,相当于重新读取数据,但是加载的主界面竟然是显示在右边区域,这样就成了两个LeftFrame。即使更改Struts2中的resultType的重定向也不可以。

最后,竟然一个简单的JS解决问题。
在提交右边页面RightFrame,使用JS更新左边LeftFrame。如下:
在rightFrame中的body的onload的事件:
functioninit(){ 
//leftTree是左边Frame的id 
//重新加载这个页面 
window.parent.frames["leftTree"].location.reload(); 
}

window.parent.frames["leftTree"].location.reload()
当时你在某一个思路上山穷水尽的时候,可以尝试换种思路,也是会柳暗花明.
需求如下:若刷新右边RightFrame页面,只刷新部分左边LeftFrame【刷新某个div】。
提到局部部分刷新,肯定想到是Ajax局部刷新。
那我们用纯js的Ajax基础实现:
functioncreateXmlHttpRequest(){ 
if(window.XMLHttpRequest){ 
returnnewXMLHttpRequest(); 
}elseif(window.ActiveXObject){ 
returnnewActiveXObject("Microsoft.XMLHTTP"); 
} 
} 
functioninit(){ 
//则进行局部刷新 
varxmlHttpReq=createXmlHttpRequest(); 
//获得出发的url的,比如struts2的action或者servlet或jsp页面 
varurl="success.jsp"; 
xmlHttpReq.open("GET",url,true); 
//因为你在作一个异步调用, 
//所以你需要注册一个XMLHttpRequest对象将调用的回调事件处理器 
xmlHttpReq.onreadystatechange=function(){ 
if(xmlHttpReq.readyState==4){ 
if(xmlHttpReq.status==200){ 
//使用parent获得左边页面中的某一个div,然后更改展示的外观 
window.parent.frames["leftTree"].document.getElementById(divId).innerHTML="测试"; 
}else{ 
alert(xmlHttpReq.status xmlHttpReq.responseText); 
} 
} 
}; 
xmlHttpReq.send(null); 
}

window.parent.frames["leftTree"].document.getElementById(divId).innerHTML=xmlHttpReq.responseText
后台action中的写法如下:
01.HttpServletResponseresponse=ServletActionContext.getResponse(); 
response.setContentType("text/html;charset=utf-8"); 
out=response.getWriter(); 
out.print("从后台传入的数据");

两种刷新方式,一种整体刷新;一种局部刷新;

整体刷新和局部刷新frameset窗口问题深入探讨的更多相关文章

  1. Flutter StreamBuilder实现局部刷新实例详解

    这篇文章主要为大家介绍了Flutter StreamBuilder实现局部刷新实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  2. elementui中使用el-tree控件懒加载和局部刷新

    这篇文章主要介绍了elementui中使用el-tree控件懒加载和局部刷新,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. jQuery ajaxSubmit 实现ajax提交表单局部刷新

    这篇文章主要介绍了jQuery ajaxSubmit 实现ajax提交表单局部刷新 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

  4. 极致体验ajax局部和整体刷新

    本篇文章将向大家介绍如何通过jquery的load方法进行局部刷新,通过封装三个属性然后我们来使用,以此达到我们想要的效果,本文写的非常好,感兴趣的朋友一起看看吧

  5. Flutter StatefulBuilder实现局部刷新实例详解

    这篇文章主要为大家介绍了Flutter StatefulBuilder实现局部刷新实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  6. ajax局部刷新一个div下jsp内容的方法

    局部刷新某个div下的jsp可以通过setInterval或者是setTimeout来轻松实现,具体如下,有此需求的朋友可以参考下,希望对大家有所帮助

  7. Ajax实现带有验证码的局部刷新登录界面

    很多登录界面都有验证码功能局部刷新效果,接下来通过本文给大家分享ajax实现带有验证码的局部刷新登录界面,感兴趣的朋友一起看看吧

  8. Vue实现页面的局部刷新(router-view页面刷新)

    本文主要介绍了Vue实现页面的局部刷新(router-view页面刷新),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. 利用ajax实现简单的注册验证局部刷新实例

    ajax的工作原理想必大家都有所了解吧,不懂的可以看看本文。下面是注册验证案例register。php是注册页面。registerProcess.php用于接收数据并返回数据

  10. 实现AJAX异步调用和局部刷新的基本步骤

    AJAX 可以在不重新加载整个网页的情况下,与服务器交换数据,并且更新部分网页,下面这篇文章主要给大家介绍了关于实现AJAX异步调用和局部刷新的基本步骤,需要的朋友可以参考下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部