国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JSP > 正文

整體刷新和局部刷新frameset窗口問(wèn)題深入探討

2024-09-05 00:20:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
頁(yè)面分割,最常見(jiàn)的系統(tǒng)或網(wǎng)站的主界面,到這種這種分割頁(yè)面,大家首先想到是frameset,使用framset分割多種frame,這種方式簡(jiǎn)單,接下來(lái)為大家介紹下局部刷新的問(wèn)題

在項(xiàng)目中,經(jīng)常會(huì)遇到頁(yè)面分割,最常見(jiàn)的系統(tǒng)或網(wǎng)站的主界面。主頁(yè)面分為,上面系統(tǒng)簡(jiǎn)介、下面作者簡(jiǎn)介、左邊系統(tǒng)功能菜單、右邊則是菜單真正展示的界面。

遇到這種這種分割頁(yè)面,大家首先想到是frameset,使用framset分割多種frame,這種方式簡(jiǎn)單。若是不喜歡使用framset,喜歡前臺(tái)設(shè)計(jì)的人也許會(huì)選擇div拼接,浮動(dòng),這就考查css樣式的功底了。
這次主要講解局部刷新的問(wèn)題。需求是:左邊f(xié)rame,右邊f(xié)rame。

大家肯定疑問(wèn),這樣刷新沒(méi)有問(wèn)題啊。的確如此。現(xiàn)在使用framset,分割兩frame,各自更新各自。右邊f(xié)rame展示菜單盡管更新提交即可。對(duì)左邊f(xié)rame是沒(méi)有影響的。

為了方便理解,左邊Frame簡(jiǎn)稱LeftFrame,右邊Frame簡(jiǎn)稱RightFrame;假如我提交RightFrame頁(yè)面,需要更新LeftFrame【動(dòng)態(tài)】頁(yè)面。那如何辦呢?
其實(shí)就是從數(shù)據(jù)庫(kù)中重新讀數(shù)據(jù);

復(fù)制代碼 代碼如下:


<FRAMESETcols="280,*"frameborder=yesbordercolor=silver>
<FRAMESRC="modifyMenu!showTreeMenu"NAME="menuTree"SCROLLING="No"id="leftTree">
<FRAMESRC="showModifyMenu.jsp"NAME="main"SCROLLING="AUTO"id="showModifyMenu">
lt;/FRAMESET>


其中modifyMenu!showTreeMenu是轉(zhuǎn)向到tree.jsp頁(yè)面
現(xiàn)在項(xiàng)目中,前臺(tái)使用struts2,當(dāng)提交右邊頁(yè)面數(shù)據(jù)時(shí),當(dāng)時(shí)設(shè)想:然后再次跳轉(zhuǎn)到主界面,相當(dāng)于重新讀取數(shù)據(jù),但是加載的主界面竟然是顯示在右邊區(qū)域,這樣就成了兩個(gè)LeftFrame。即使更改Struts2中的resultType的重定向也不可以。

最后,竟然一個(gè)簡(jiǎn)單的JS解決問(wèn)題。
在提交右邊頁(yè)面RightFrame,使用JS更新左邊LeftFrame。如下:
在rightFrame中的body的onload的事件:

復(fù)制代碼 代碼如下:


functioninit(){
//leftTree是左邊Frame的id
//重新加載這個(gè)頁(yè)面
window.parent.frames["leftTree"].location.reload();
}


window.parent.frames["leftTree"].location.reload()
當(dāng)時(shí)你在某一個(gè)思路上山窮水盡的時(shí)候,可以嘗試換種思路,也是會(huì)柳暗花明.
需求如下:若刷新右邊RightFrame頁(yè)面,只刷新部分左邊LeftFrame【刷新某個(gè)div】。
提到局部部分刷新,肯定想到是Ajax局部刷新。
那我們用純js的Ajax基礎(chǔ)實(shí)現(xiàn):

復(fù)制代碼 代碼如下:


functioncreateXmlHttpRequest(){
if(window.XMLHttpRequest){
returnnewXMLHttpRequest();
}elseif(window.ActiveXObject){
returnnewActiveXObject("Microsoft.XMLHTTP");
}
}
functioninit(){
//則進(jìn)行局部刷新
varxmlHttpReq=createXmlHttpRequest();
//獲得出發(fā)的url的,比如struts2的action或者servlet或jsp頁(yè)面
varurl="success.jsp";
xmlHttpReq.open("GET",url,true);
//因?yàn)槟阍谧饕粋€(gè)異步調(diào)用,
//所以你需要注冊(cè)一個(gè)XMLHttpRequest對(duì)象將調(diào)用的回調(diào)事件處理器
xmlHttpReq.onreadystatechange=function(){
if(xmlHttpReq.readyState==4){
if(xmlHttpReq.status==200){
//使用parent獲得左邊頁(yè)面中的某一個(gè)div,然后更改展示的外觀
window.parent.frames["leftTree"].document.getElementById(divId).innerHTML="測(cè)試";
}else{
alert(xmlHttpReq.status+xmlHttpReq.responseText);
}
}
};
xmlHttpReq.send(null);
}


window.parent.frames["leftTree"].document.getElementById(divId).innerHTML=xmlHttpReq.responseText
后臺(tái)action中的寫(xiě)法如下:

復(fù)制代碼 代碼如下:


01.HttpServletResponseresponse=ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
out=response.getWriter();
out.print("從后臺(tái)傳入的數(shù)據(jù)");


兩種刷新方式,一種整體刷新;一種局部刷新;
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 准格尔旗| 田林县| 布尔津县| 虹口区| 静安区| 新河县| 闽侯县| 多伦县| 盐边县| 改则县| 明水县| 建始县| 文水县| 利川市| 吉安县| 黄大仙区| 体育| 离岛区| 汝城县| 抚顺市| 灵寿县| 江口县| 鞍山市| 桂林市| 金溪县| 石嘴山市| 湛江市| 兴安县| 西充县| 宜川县| 桃园县| 西丰县| 栾川县| 龙门县| 沅陵县| 夏邑县| 托克托县| 湘阴县| 寿阳县| 紫阳县| 同江市|