閑話少說先看效果!!!
說明適用場景:在a.jsp頁面,點擊查看一個文件,layer.open彈出b.jsp頁面,在b.jsp頁面可以修改文件的名稱(其實是去改了數據庫),但是關閉彈窗后,要求a.jsp頁面不刷新同時文件的名稱也要隨之而改變
有請eval()函數登場 // eval() 函數會將傳入的字符串當做 JavaScript 代碼進行執行。
1.a.jsp頁面
var lay=layer.open({
type: 2,
title:o.showFileName,
shadeClose: true,
shade: 0.8,
area: ['100%', '100%'],
content: "/afArchiveDetail/operate.do?ArchiveDetailUUID=" + o.archiveDetailUUID+"&YearMonth="+o.yearMonth+"&flag=operate&callbackname=updateShowFileName"
});
注意:content: "/afArchiveDetail/operate.do?ArchiveDetailUUID=" + o.archiveDetailUUID+"&YearMonth="+o.yearMonth+"&callbackname=updateShowFileName"
updateShowFileName是a.jsp的一個方法
//修改文件名 供子頁面回調
function updateShowFileName(str) {
var strs=str.split(","); //字符分割 然后這樣就可取值了strs[2]
//寫你自己的業務邏輯代碼
}
2.b.jsp頁面
const callbackname = getQueryString("callbackname");//獲取回調函數名稱
if (callbackname != "") {
//調父頁面的方法
var uuid=_this.afArchivedetail.archiveDetailUUID;
var id=_this.afArchivedetail.attributeId;
var showFileName=_this.afArchivedetail.showFileName;
var evalStr = "parent." + callbackname+"('"+uuid+','+id+','+showFileName+"')";//就相當於parent.updateShowFileName(參數1,參數2。。)
eval(evalStr); //去調用父頁面a.jsp的方法了
// eval() 函數會將傳入的字符串當做 JavaScript 代碼進行執行。
}
//獲取get參數 url后面的參數
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURI(r[2]);
return null;
},
-------------end---------------------