Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 20. 3. 2013, 20:03:22
Zdravím,
potřebuji na stránce posílat data přes POST na jinou doménu. Pokouším se do udělat přes iframe, který je javascriptem vložen do stránky, do něj vložím formulář, naplním tady a odešlu jako POST. Problém je u firefoxu a opery, kde mi tento kód nechce fungovat. Nedaří se mi zjistit čím by to mohlo být, možná chybí některé parametry iframu či formuláře, ale zkoušel jsem je různě doplňovat a nezabralo nic. IE (překvapivě), chrome a safari fungují. var iframe = document.createElement("iframe"); iframe.style.display = 'none'; document.body.appendChild(iframe); if (iframe.contentWindow) { iframe = iframe.contentWindow; } else { if (iframe.contentDocument && iframe.contentDocument.document) iframe = iframe.contentDocument.document; else iframe = iframe.contentDocument; } } var form = document.createElement("form"); form.setAttribute("action", "http://www.mojedoman.cz/post.php"); form.setAttribute("method", "POST"); var input = document.createElement("input"); input.setAttribute("name", "data"); input.setAttribute("value", "Testovací data"); form.appendChild(input); iframe.document.open(); iframe.document.appendChild(form); iframe.document.close(); form.submit(); |
||
_es Profil |
Sylar:
A čo to má celé robiť? Odoslať formulár na inú doménu bez načítania odpovede do toho istého celého okna? Na to ti stačí mať na stránke iframe, môže byť aj skrytý, a formulár s vyplneným atribútom target ( Formuláře » form) spárovaný s atribútom name elementu iframe ( Rámy » iframe). To bude fungovať aj úplne bez JS. Ak má iframe zadané name , tak objekt window, k nemu prislúchajúci, získaš najľahšie ako frames.nameIframu .
Pokúšaš sa vložiť elementy do dokumentu, ktoré však boli vytvorené cez iný dokument - s tým môže byť možno v niektorých prehliadačoch problém. Použi metódu createElement pre správny dokument.
|
||
Sylar Profil |
#3 · Zasláno: 21. 3. 2013, 23:38:43
_es:
díky moc, udělal jsem to s tím "přesměrováním" do iframu |
||
Časová prodleva: 11 let
|
0