Autor | Zpráva | ||
---|---|---|---|
123abc Profil * |
#1 · Zasláno: 20. 8. 2012, 22:44:39 · Upravil/a: Moderátor (editace znemožněna) 22. 8. 2012, 13:04:35
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 |
#2 · Zasláno: 20. 8. 2012, 22:59:26
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 * |
#3 · Zasláno: 20. 8. 2012, 23:31:29
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 |
#4 · Zasláno: 21. 8. 2012, 00:58:51
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 * |
#5 · Zasláno: 21. 8. 2012, 01:18:00
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 * |
#6 · Zasláno: 21. 8. 2012, 01:32:29
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 * |
#7 · Zasláno: 21. 8. 2012, 01:41:28
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 |
#8 · Zasláno: 21. 8. 2012, 07:58:56
--- 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 * |
#9 · Zasláno: 21. 8. 2012, 12:22:04
[#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 |
#10 · Zasláno: 21. 8. 2012, 13:20:11
123abc:
To jsi špatně pochopil. to jsou tři různé stránky na doméně B. |
||
123abc Profil * |
#11 · Zasláno: 21. 8. 2012, 13:48:10
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. |
||
Časová prodleva: 12 let
|
0