基本业务是这样子的:根据给定的用户名和密码,加密后生成二维码然后打印出来。看似简单的一句话,存在两个大问题:
1、打印功能时不能指定打印区域的,要打印只能打印整个页面,不可能只打印二维码所在的小片区域。那么只能重新开一个窗口,然后单独打印这一个窗口;
2、重新打开窗口时需要带参数,而且参数必须是隐藏的。window.open()默认带参数的方法是在url中直接添加参数,这样子参数信息就会暴漏出来。
基于以上两个问题,考虑使用POST的方式进行提交。
基本思路如下:
1、定义一个POST提交方式的form表单,target为QRcodeWin,将数据存放到其中的两个隐藏域中。
2、window.open()时目标设置为form的target
3、提交表单。
具体代码如下:
//判断表单是否存在,若不存在则在body中添加form表单 if($("#QRcodeForm").length<=0){ var form = "<form id='QRcodeForm' action='print/printCredentials.jsp' method='post' target='QRcodeWin'>" + "<input type='hidden' id='clientName' name='clientName'/>" + "<input type='hidden' id='clientPwd' name='clientPwd'/>" + "</form>"; $("body").append(form);//在body中添加form表单 } //将用户名和密码保存到form表单的隐藏域中 $("#clientName").val(clientName); $("#clientPwd").val(clientPwd); //打开新的窗口 window.open("print/printCredentials.jsp","QRcodeWin","_blank"); //提交表单 $("#QRcodeForm").submit();
值得一提的是:
在JSP页面,通过request.getParameter(“clientName”);获取参数会获取到两遍,第一遍是window.open()访问的因为没有提交数据所以数据都是null,第二遍是form表单提交的有数据所以能拿到。因此在进行加密时需要判断一下参数值是否为null。
参考链接:http://aguu125.iteye.com/blog/1545737
今天的文章利用window.open实现post方式的传递参数分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31250.html