Autor Zpráva
Sylar
Profil
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
_es:
díky moc, udělal jsem to s tím "přesměrováním" do iframu

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: