post提交表单到新窗口中

来源:互联网 发布:热力学数据库 编辑:程序博客网 时间:2024/05/08 06:38

在开发web中,有很多小技巧。如果用心留意,是非常管用的,但这些小技巧有非常多,以至我们无法记住。

在网上找又信息很少,还是记下来 以备以后用得着的时候。

背景:有时候我们做web开发的时候为了提供交互性,需要将表单提交,但结果要显示在新的窗口中,在IE中

新的窗口有很多限制,比如去掉工具栏、菜单栏、地址栏、规定高度、宽度等等。

很多人会用js函数 window.open(),但这个函数只能GET提交,不能POST提交。在我们开发的过程中往往经常用POST提交。

解决这个问题的思路是:先用window.open()打开一个新的窗口,然后在表单中指定提交的target为刚刚打开的窗口即可。

例子代码:

<form name="query_notice_form" target="_blank"
 action="<c:url value="/abc/xxxx.do"/>" method="post"><input
 type="hidden" name="currType"></form> 

function showNoticeDetail(obj) {
 window.open('about:blank',"_blank","height=400,width=820,status=yes,toolbar=no,menubar=no,location=no");
 query_notice_form.submit();
}

 

 

最近在用codeigniter进行开发,遇到过这样的情况:

一个页面加载好时用window.open打开一个子窗口,子窗口接收父窗口处理后,

传过来的一些参数,对应执行一些flash的演示效果。

使用时父窗口传值到子窗口,父窗口本身不跳转也不刷新,需要刷新子窗口。

如果用一般的表单提交方法父窗口会跳转,用ajax来提交又刷新不到子窗口。

 

看到上面的一段资料才知道原来可以用form的target完美解决,只要取得子窗口的句柄,

赋值给target,子窗口是父窗口初始化时就打开的,这样表单提交的时候父窗口没有变化,

子窗口取到值并得到了刷新。

 

-------记下来,以后可查看,知识在于积累!---------------------------------

原创粉丝点击