2011-05-23 64 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