2010-06-08 3 views
1

에서 양식 :POST 나는과 같이 생성 된 iframe에 양식 게시하고 싶은 iframe을

내 JS 페이지 안에 iframe이로드는 iframe을에 양식을 추가하고 양식을 제출합니다. 내가 원하는 것은 그 요청의 결과를로드하는 iframe입니다. 따라서 폼을 게시하고 iframe 내부에 결과를 으로 렌더링하는 것이 효과적입니다. 처음에는 iframe을 표시하지 않고 부모를 건드리지 않고 말입니다.

나는이 대답에서 코드를 사용하고 있습니다 :

JavaScript post request like a form submit

하지만 난 그게 부모를 다시로드하지 얻을 수 없습니다. 양식을 게시하고 iframe을 새로 고치는 대신 부모 전체가 새로 고침됩니다. 내가 게시하는 URL이 다르기 때문에 그 이유가 무엇인지 알지 못하고 적어도 리디렉션 할 것입니다.

누구든지이 문제를 해결할 수 있습니까? 난 그냥 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 내부의 컨트롤을 만들었습니까? 잘못하고있는거야? –

+0

양식을 만들 때 iframe에서 볼 수 있습니다 (방화 쇠 또는 이와 동등한 도구 사용)? .target = '_self'를 추가 할 수 있습니다. 그러나 이것은 기본 동작이므로 중요하지 않아야합니다. –

+0

알다시피, 나는하지 않는다! 방화 광구로 iframe에만 태그가 표시되지만 iframe에서 innerHTML을 수행하면 ...이를 볼 수 있습니다 ... 이상하다 ... –

0

이 방법이 얼마나 도움이 될지 모르지만 사용자가 지적한 대답은 양식에 이름/ID를 부여하지 않습니다. document.getElementById('myForm').submit()과 같은 양식을 게시하려는 경우 양식에 이름/ID가 없기 때문에 문제가 발생할 수 있습니다.

과거에는 페이지에 여러 양식이있을 때 양식 제출에 문제가있었습니다. 분명히 잘못된 양식을 제출 한 것 같습니다. 모든 경우에 양식에 이름/ID를 부여한 다음 ID로 양식을 가져오고 submit()을 호출하면 문제가 해결 된 것으로 보입니다.

+0

전체 페이지를 다시로드하는 데 도움이되지 않았지만, 슬프게도 감사합니다. –

1

Dan이 말한 것처럼 "문서"가 틀렸고 다른 부분은 iframe에 삽입 할 때 document.getElementById(div).innerHTML이 아닌 document.getElementById(div).contentWindow.document.childNodes[0].appendChild(form)을 사용해야한다는 것이 었습니다.

관련 문제