2010-06-08 3 views
1

Я хотел бы опубликовать форму в IFRAME, сгенерированный как так:POST форма в IFRAME

Мои JS загружающий IFRAME внутри страницы, добавляет форму в IFRAME и отправляет форму. Я бы хотел, чтобы iframe загружал результат этого запроса. Итак, я бы очень хотел опубликовать форму и сделать результат внутри iframe, не касаясь родителя (кроме того, чтобы в первую очередь разместить iframe для отображения).

Я использую код из этого ответа:

JavaScript post request like a form submit

, но я не могу заставить его не перезагрузить родителя. Я публикую форму, и вместо обновления iframe весь родитель обновляется. Я не знаю, почему это так, потому что URL-адрес, который он публикует, отличается и, по крайней мере, перенаправляется туда.

Может ли кто-нибудь помочь мне с этой проблемой? Мне просто нужен пост внутри iframe и только внутри iframe.

EDIT: После нескольких исследований, видимо, форма не создается должным образом. Я использую document.createElement («form»), а затем document.getElementById («my_iframe_id»). AppendChild (form), чтобы добавить его, но он, похоже, работает некорректно.

ответ

7

Правильно, потому что вы создаете узел формы в текущем документе.

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

для его создания внутри iframe.

+0

Я получил документ iframe, как вы указали, и я изменил код, чтобы создать форму правильно, но форма все еще перезагружает всю страницу ... Я также создаю элементы управления внутри iframe, что еще я могу делать не так? –

+0

, когда вы создаете форму, вы можете увидеть ее в iframe (используя firebug или эквивалент)? вы можете добавить .target = '_self' - но это поведение по умолчанию, поэтому это не имеет значения. –

+0

Знаете, я не знаю! С firebug я вижу только теги в iframe, но если я делаю innerHTML на iframe, я это вижу ... Это странно ... –

0

Не знаете, сколько это поможет, но ответ, на который вы указываете, не дает формы имя/идентификатор. Если вы пытаетесь опубликовать форму с чем-то вроде document.getElementById('myForm').submit(), у вас может возникнуть проблема, потому что ваша форма не имеет имени/идентификатора.

В прошлом у меня были проблемы с отправкой формы, по-видимому, представляя неправильную форму, когда на странице есть несколько форм. В каждом случае, давая форму имя/id, а затем получение формы по id и вызов submit(), казалось, решил проблему.

+0

Это не помогло со всей перезагрузкой страницы, к сожалению, но спасибо! –

1

Это работает сейчас, часть из них заключалась в том, что «документ» был неправильным, как сказал Дэн, а другая часть заключалась в том, что при вставке в iframe нужно использовать document.getElementById(div).contentWindow.document.childNodes[0].appendChild(form), а не только document.getElementById(div).innerHTML.

Смежные вопросы