2011-05-23 88 views
8

当我们执行window.open()时,是否有指定method = POST的选项?由于默认情况下,它是GET如何在window.open()中POST POST()

我想要的是这个。父窗口有一些表单参数(数量很多),并且应该通过window.open()发送到服务器。使用查询字符串将其全部追加到GET网址中并不是一个好主意。

回答

14

您可以使用window.open()打开一个带有名称的空窗口。然后,您可以使用<form>,并在其中引用新窗口名称的“目标”属性,然后发布它。

编辑确定这里的想法。您在网页上的表单,它可以隐藏:

<form id='theForm' method='post' action='/your/action' target='TheNewWindow'> 
    <input type='hidden' name='param_1' value='whatever'> 
</form> 

那么你得到的结果到窗口是这样的:

window.open('about:blank', 'TheNewWindow'); 
document.getElementById('theForm').submit(); 

确保您使用的窗口名称是有效的标识符(如JavaScript变量名称),否则IE将会变得不安。

Here是一个jsfiddle。

+0

你能不能详谈一下?也许是一个小代码示例? – Victor 2011-05-23 17:00:25

+0

@Kaushik是的,我现在正在进行一个小测试...我想确保我知道详细信息:-) – Pointy 2011-05-23 17:13:33

+0

谢谢。这对我来说不起作用,因为这会一直打开一个新窗口。但我忘了提及,只有点击某个特定的按钮时,我才需要新的窗口,否则,同一个窗口。但是,谢谢你的努力,我会接受这个答案 – Victor 2011-05-23 17:43:34