Autor Zpráva
123abc
Profil *
Ahoj,
potrebuju na strance www.b.cz JavaScriptem vyplnit formular na strance www.a.cz.
Formular na www.a.cz zapise prijate parametry do txt souboru. Kdyz ho vyplnim pres www.a.cz tak se to v souboru objevi, kdyz ale otevru stranku s JavaScriptem na www.b.cz, tak to nic nedela :-(
Nevite, kde mam chybu?

Stranka na www.b.cz:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
   // document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","http://www.a.cz/stranka.html",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("parametr=AhojSvete");
}
loadXMLDoc();
</script>
</head>
<body>
<h2>mmm</h2>  
</body>
</html>
Keeehi
Profil
Problém je s omezením ajaxu v rámci domény. Je to stejné jako se třeba nelze javascriptem dostat k obsahu rámu, který není na stejné doméně. Pokud by se to změnilo z POSTu na GET, možnost by byla spousta, pokud Je však potřeba POST tak buď normálně ajaxovat php script na vlastní doméně, který vyšle POST požadavek k druhé doméně, nebo formuláři přidat target a směrovat ho do neviditelného iframe.
123abc
Profil *
na www.b.cz muzu delat libovolne upravy, na www.a.cz nemuzu

Jak to myslite s tim tagetem?
U GET by stacilo iframe s parametry formulare v url, mam pravdu?

S tim php skriptem je to problem, ja to potrebuju udelat z PC klienta, ne serveru.

Existuje neco jako CURL http://curl.haxx.se/ pouzitelny v JavaScriptu?
Normalne na PC bych zavolal curl z prikazoveho radku:
curl -d 'parametr="AhojSvete"' -X POST "http://www.a.cz/stranka.html"
Keeehi
Profil
123abc:
curl existuje v php. server (čti apache a php) se dá nainstalovat (případně jsou i portable verze) i u klienta. Pokud však PHP (či jiný servrový jazyk) použít nelze, první post možnost padá.

Pak je tu tedy ta druhá možnost:
1. Ze stránky A okopírujte formulář a vložte ho do stránky B.
2. Ve stránce B k <form> přidejte target="cil".
3. Do stránky B vložte <iframe name="cil" width="300" height="200"></iframe>.

Jelikož A nejspíše vyžaduje POST (zkuste ověřit, zda to náhodou nežere i get), nic jiného se s tím asi moc dělat nedá.
123abc
Profil *
OK, takze stranka na www.b.cz obsahuje:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h2>asdf</h2>
<div>
<form action="http://www.a.cz/form.php" method="post" target="cil">
<input type="text" name="parametr" value="hodnota">
<input type="submit" value="odeslat">
</form>
</div>
<hr>
<iframe name="cil" width="300" height="200"></iframe>
</body>
</html>

K cemu je mi ten target a nasledny iframe?
Jak muzu zaridit automaticke odeslani formulare s predem danou hodnotou pri nacteni stranky?

Formular GET nebere :-(
123abc
Profil *
Kod:
<!DOCTYPE html>
<html>
<head>
</head>
<body>

<h2>asdf</h2>

<div style="display: none;">
<form action="http://www.a.cz/form.php" method="post" id="formularA" target="cil">
<input type="text" name="parametr" value="hodnota">
<input type="submit" value="odeslat">
</form>
<script type="text/javascript">
document.getElementById('formularA').submit();
</script>
<iframe name="cil" width="1" height="1"></iframe>
</div>


Obsah stranky...
</body>
</html>

funguje, ale prohlizec hlasi blokovani vyskakovaciho okna. Jak se to da vyresit, aby to nic nehlasilo?
123abc
Profil *
Zkusil jsem:
<!DOCTYPE html>
<html>
<head>
</head>
<body>

<h2>asdf</h2>

<div style="display: none;">
<iframe src="formVyplnit.html" width="1" height="1"></iframe>
</div>

Obsah stranky...
</body>
</html>

a ve formVyplnit.html mam:
<!DOCTYPE html>
<html>
<head>
</head>
<body>

<div style="display: none;">
<form action="http://www.a.cz/form.php" method="post" id="formularA">
<input type="text" name="parametr" value="hodnota">
<input type="submit" value="odeslat">
</form>
<script type="text/javascript">
document.getElementById('formularA').submit();
</script>
</div>

</body>
</html>

vyskakovaci okna to nehlasi, ale nefunguje to. Kde muze byt chyba?

Skoro jako kdyby se nevykonal javascript v iframu...
peta
Profil
--- a.htm ---
<!DOCTYPE html>
<html>
<body>

aaa
 
<iframe src="b.htm" width="100" height="100"></iframe>
 
</body>
</html>

--- b.htm ---
<!DOCTYPE html>
<html>
<body>

bbb
 
<form action="c.htm" method="get" id="formularA">
<input type="text" name="parametr" value="hodnota">
<input type="submit" value="odeslat">
</form>
<script type="text/javascript">
alert('odesilam')
document.getElementById('formularA').submit();
</script>
 
</body>
</html>

--- c.htm ---
ccc

<script>
alert([window.location.href,self.location.href]);
</script>

Jediny problem, ktery mi nastal, ze jsem pro simulaci musel spoustet ve FF cely priklad odenterovanim adresy v adresnim radku, protoze si FF pamatoval posledni stranku v iframu.
123abc
Profil *
[#8] peta
-- c.htm ---
ccc
 
<script>
alert([window.location.href,self.location.href]);
</script>

Ja ale nejsem schopny zasahnout do formulare <form action="c.htm" method="get" id="formularA">
c.htm nemuzu ovlivnit.
Keeehi
Profil
123abc:
To jsi špatně pochopil. to jsou tři různé stránky na doméně B.
123abc
Profil *
Keeehi:
Aha, to jsem opravdu nepochopil.

K cemu mi ale bude <form action="c.htm" method="get" id="formularA"> ? Ja ty data potrebuju poslat originalnimu formulari.
peta
Profil
123abc:
Pouzil jsem tvuj priklad. Pouze jsem zmenil pro simulaci pojmenovani stranek. Odmazal jsem z nej vse, co by mohlo narusit ukazku.
a.htm obsahuje iframe z b.htm, ktery odkazuje na c.htm.
Na b.htm je tvuj script, ktery ten formular odesila.
Cili, presne tvuj priklad.
Dospel jsem k tomu, ze ten priklad funguje. Chovani, ktere popisujes, se mi projevilo jen jako problem prohlizece FF (jaky pouzivas ty, netusim). Script na strance b.htm preskocil a zobrazil hned c.htm, pokud jsem pouzil obnoveni stranky pomoci f5. Pokud jsem ale kliknul do adresniho radku, tak se mi znovu provedl b.htm, tj. zbrazi se alert('odesilam').
Takze, aspon v me simulaci program funguje spravne, jak jsi chtel. Predpokladam, ze F5 uzivatel nebude mackat. Pokud ano, tak pridej do formulare nahodne cislo.
Alert v b a c jsem pouzul pro to, abych odlisil, ktera stranka se mi kdy zobrazuje.

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:

0