js jquery windows父窗体向子窗体传值

今天项目出了一个问题,在计划管理-年度计划申请模块提交部门审核人的时候出现了 父窗体向子窗体传值传不过的情况,因为项目只针对IE 所以子窗体使用的是showModalDialog

以下是整个URI


标红部分是需要传入子窗体的值

showModalDialog(encodeURI("${pageContext.request.contextPath}/taskManage/taskManageDeptLeaderList.action?time="+new Date(),param),"scroll:no;;status:no;dialogWidth:500px;dialogHeight:300px;" );

下图为子窗体打开后的接值方式


已确知父窗体param数组存在值,在此出现了问题 子窗体接收不到父窗体传的值 

左右排查不知是什么问题 后来再次排查看了一下url 发现可能是encodeURI把param进行了编码 从而导致子窗体无法取到值

这里使用encodeURI的原因是因为高版本tomcat对url严格按照RFC 3986规范进行访问解析,而RFC 3986规范中定义了url中只允许英文字母(a-zA-Z)、数字(0-9)、- _ . ~  4个特殊字符以及所有保留字符(RFC 3986中指定了一下字符为保留字符:! * ‘ () ; : @ & = + $ , / ? # [ ] )。而我们在url中传入了time= new Date() 存在中文 所以解析不了因此必须使用encodeURI进行编码才可以

于是换成了以下这样

showModalDialog(encodeURI("${pageContext.request.contextPath}/taskManage/taskManageDeptLeaderList.action?time="+new Date()),param,"scroll:no;;status:no;dialogWidth:500px;dialogHeight:300px;" );

问题解决了

猜你喜欢

转载自blog.csdn.net/cm777/article/details/80776899