jsp对弹出jsp传值 和刷新网页后js仍然没有刷新的解决方法

jsp对弹出jsp传值
和刷新网页后js仍然没有刷新的解决方法

现在
从A.jsp弹出B.jsp,B.jsp包含B.js;
要从B.js访问到A.jsp中的变量的值;

弹出JSP的代码为:
$('#more').html('<iframe id="iframe1" scrolling="auto" frameborder="0" src="<%=request.getContextPath()%>/RLL/sv/infob.jsp" style="width:100%;height:100%;"></iframe>');
$('#more').window('open');

1 url后传值
infob.jsp?rid="+infodata.SID
从包含的js里访问,提示错误;
Uncaught ReferenceError: rid is not defined

2 使用session
A.jsp
var rmid=infodata.SID;
<%       
    session.setAttribute("rid","XXID");       
%>

B.jsp:
<input type="hidden" id="rid" value="<%=session.getAttribute("rid")%>"/>

B.js:
alert("接收xxid:"+$('#rid').val());
可以获取到字符串"xxID";

但是,rmid怎么能传到 <% %>里;
var rmid=infodata.SID;
<%       
    session.setAttribute("rid",rmid);       
%>
它报一个错,rmid cannot be resolved to a variable

3 使用js操作cookie
A.jsp:
document.cookie="rmid="+infodata.SID;

B.js:        
var rid=document.cookie.split(";")[0].split("=")[1];
alert("接收xxid:"+rid);
或者
var cokes=document.cookie;

cookie可能针对单个页面;访问不到A.jsp中设置的cookie;

4 使用公共js
定义一个公共js文件common.js,在A.jsp和B.jsp中都包含;
common.js:
var ridddd=null;

function setrid(rmid) {
    ridddd=rmid;
};

function getrid() {
    return ridddd;
};

在A.jsp中setrid(infodata.SID),
在B.js中getrid(),获取不到;

5 使用window.x形式变量
A.jsp:
window.ridddd=infodata.SID;
B.js:
var rid=window.ridddd;
获取不到;

6 使用self.parent.window.x
B.js:
var rid=self.parent.window.ridddd;
可以访问到;

一个html是一个window; 从a.jsp弹出b.jsp,b的父是a;b.jsp包含b.js;
现在要在b.js里获取到a.jsp里的变量的值;
a.jsp:
window.rid1=infodata.SID;
b.js:
var rid=self.parent.window.rid1;
self代表自己,parent代表父;

7 前端调试时,修改了js文件并保存,刷新了网页,调用的js文件仍然是未保存之前的js文件的解决方法
此种情况,需要清除浏览器缓存,再刷新网页;
例如搜狗浏览器,选择 工具-清除浏览记录;清除如图1的内容;
 

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/87896175