使用window.open提交form表单

本文介绍了一种在Web开发中实现新窗口打开并展示表单提交数据的方法。通过使用JavaScript的`window.open`方法结合表单target属性,可以在新窗口中加载指定页面并传递表单数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天碰到一个应用,需要在一个固定的Windows中展示数据,而数据又是通过form表单发给Servlet处理并forward(request, response)到另一个view页面来统一展示的
..好吧 表达有点不好..

现在需要,点提交按钮后open一个新的固定页面,并提交父页面的表单数据.
查询关于Window.open
oNewWindow = window.open( [sURL] [, sName] [, sFeatures] [, bReplace])
其中sName这个参数是这么定义的
sName Optional. String that specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an a element.
target是设置或获取目标内容要显示于哪个窗口或框架.
所以就可以这么写了~

chartForm.target = "newWindow";
var win = window.open("about:blank","newWindow","height=650,width=1000,scrollbars=yes,status=yes,toolbar=no,menubar=no,location=no");
win.focus();
chartForm.submit();


这里先打开一个about:blank 为了避免像Servlet传递空数据,然后焦点上移,提交.ok~
使用 `window.open()` 传递参数给 JSP 页面时,若希望避免将参数附加到 URL 上,并确保数据能够安全地传输至目标页面,可以通过隐藏表单提交的方式实现。 创建一个 `<form>` 元素并将其 `method` 设置为 `post`,同时将 `target` 属性设置为 `_blank`,这样可以在新窗口中打开目标页面。通过 JavaScript 动态填充该表单中的隐藏字段值,并触发提交操作,从而以 POST 方法打开页面[^2]: ```html <form id="hiddenForm" action="target.jsp" method="post" target="_blank"> <input type="hidden" name="name" value=""> <input type="hidden" name="department" value=""> </form> <script> function openNewWindowWithData(name, department) { var form = document.getElementById("hiddenForm"); form.name.value = name; form.department.value = department; document.body.appendChild(form); form.submit(); } </script> ``` 当调用 `openNewWindowWithData("张三", "技术部")` 函数时,浏览器将以 POST 方式在新窗口中加载 `target.jsp` 页面,并携带两个参数:`name` 和 `department`。由于这些参数是通过 POST 提交的,因此不会出现在 URL 中,从而提升了安全性[^1]。 在目标 JSP 页面中,可以使用 `request.getParameter()` 方法获取这些参数,并进行相应的处理: ```jsp <% String name = request.getParameter("name"); String department = request.getParameter("department"); if (name != null && department != null) { out.println("姓名:" + name + "<br>"); out.println("部门:" + department); } else { out.println("参数缺失,请检查请求方式和数据是否正确提交。"); } %> ``` 需要注意的是,在某些情况下,JSP 页面可能会接收到两次请求:第一次是由 `window.open()` 引发的 GET 请求,此时参数为 `null`;第二次则是由隐藏表单提交引发的 POST 请求,此时参数已正确填充。因此,在进行加密或其他敏感操作之前,应先判断参数值是否为 `null`[^1]。 此外,还需注意浏览器的安全策略可能会影响 `window.open()` 的行为,特别是在弹出窗口被拦截的情况下。为了提升兼容性,建议在用户交互事件(如点击按钮)中触发 `window.open()` 调用[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值