2010-06-08 51 views
1

形式我想發佈在iframe形式,像這樣產生的:POST在iframe

我的JS加載頁面中的iframe,增加了一個表單的iframe並提交表單。我想要發生的是加載該請求結果的iframe。因此,我希望有效地發佈表單並在iframe內呈現結果,而不觸及父級(除了將iframe放在首位展示外)。

我使用的代碼從這樣的回答:

JavaScript post request like a form submit

,但我不能讓它不會重新加載父。我發佈表單,而不是iframe刷新,整個父級刷新。我不知道這是爲什麼,因爲它張貼的網址是不同的,至少會在那裏重定向。

任何人都可以幫我解決這個問題嗎?我只想在iframe中發佈帖子,並且只在iframe中發佈帖子。

編輯:經過一些更多的研究,顯然表單沒有正確創建。我使用document.createElement(「form」),然後使用document.getElementById(「my_iframe_id」)。appendChild(form)來追加它,但它似乎沒有正常工作。

回答

7

正確,因爲您正在當前文檔中創建表單節點。

document.getElementById("my_iframe_id").contentWindow.document.createElement('form'); 

在iframe中創建它。

+0

我已經得到了你指定的iframe文檔,並且我已經改變了代碼來正確地創建表單,但是表單仍然重新加載了整個頁面...我還在iframe中創建了控件,我還能做什麼做錯了? – 2010-06-08 21:12:29

+0

當你創建表單時,你可以在iframe中看到它(使用螢火蟲或等效)?你可以添加.target ='_self' - 但這是默認行爲,所以不應該。 – 2010-06-08 21:25:16

+0

你知道,我不知道!使用螢火蟲我只在iframe中看到標籤,但是如果我在iframe上做innerHTML,我確實看到它...這很奇怪... – 2010-06-08 23:32:43

0

不知道這會有多大幫助,但您指出的答案不會給表單一個名稱/ ID。如果您嘗試使用類似document.getElementById('myForm').submit()的內容發佈表單,則可能會遇到問題,因爲您的表單沒有名稱/標識。

在過去,當頁面上有多個表單時,表單提交很明顯提交了錯誤的表單。在每一種情況下,給表單一個名稱/ ID,然後通過ID獲取表格並呼籲submit()似乎解決了這個問題。

+0

這並沒有幫助整個頁面重新加載,不幸的是,但謝謝! – 2010-06-08 21:20:49

1

它現在有效,其中一部分是「文檔」是錯誤的,正如丹說的,另一部分是,當插入到iframe中時,需要使用document.getElementById(div).contentWindow.document.childNodes[0].appendChild(form)而不僅僅是document.getElementById(div).innerHTML