Portál AbcLinuxu, 20. dubna 2024 01:30


Dotaz: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?

14.10.2009 08:16 Ladislav Nešněra | skóre: 30 | blog: ..+2
Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Přečteno: 384×
Odpovědět | Admin
Zdravím. Řeším situaci, kdy uživatel má v prohlížeči zobrazenu stránku a potřebuje některé položky přenést do interního systému, který umožňuje vstup dat přes browser. V tuto chvíli to mám řešeno pomocí odkazu v bookmarku ve tvaru javascript:vlastníKód. Řešení je funkční, ale vadí mi nemožnost debugovat (čas od času se struktura dat na zdrojovém webu pozmění) a nečitelnost kódu. Našel by se nějaký lepší nápad?

Také by mi docela pomohlo, kdyby byl nějaký trik, jak nemuset mít v tom bookmarku celý kód, ale pouze odkaz na js knihovnu. Zkoušel jsem DHTML Way, jenže browser mi nedovolí takto nadrzo dotáhnout script z jiné domény.


Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.10.2009 08:59 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Odpovědět | | Sbalit | Link | Blokovat | Admin
V atributu action tagu form můžete uvést libovolné URL, klidně tedy adresu interního systému. Jen možná některé prohlížeče zobrazí varování, že se formulář odesílá do jiné domény, než ze které byl zobrazen.
14.10.2009 10:07 Ladislav Nešněra | skóre: 30 | blog: ..+2
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
To nezní jako špatná cesta. Fakt je, že pár minut po položení dotazu mě napadlo, zda by nefungoval prostý submit na náš server. Tag form tam je, tak vyzkouším, třeba to půjde. Díky
14.10.2009 16:57 dark
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Nebo použít AJAX a cross-domain request, to by nešlo? Pokud se ve formu neodesílá soubor, tak by to mělo být jednoduché (se souborem nevím).
15.10.2009 07:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Aneb proč to dělat jednoduše, když to jde i složitě. Z původního dotazu jsem pochopil, že má tazatel někde vlastní webový formulář, a data z něj potřebuje odeslat do jiné domény, kde je nějaká adresa, která data zpracuje. Není tedy nic jednoduššího, než jako adresu akce formuláře nastavit tu adresu v cizí doméně.
15.10.2009 12:03 Ladislav Nešněra | skóre: 30 | blog: ..+2
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Tak to jsem dotaz položil blbě :-(. Zdroj dat je cizí systém (nějaké IBM sledování servisů) a tam vyplněná data tahám do interních evidencí (jde o snahu trošku ulehčit papírování). Javascript uložený v bookmarku mi v tuto chvíli obchází problém se zabezpečením - jinak bych s obsahem na IBM stránkách moc nenadělal. Současné řešení funguje (resp. fungovalo, než zas provedli nějaké změny) tak, že vytáhnu položky které mě zajímají (dílem to je v pojmenovaných polích, dílem to vyzobávám text z buněk tabulky) a odešlu na náš server ve tvaru našeURL¶metr1=hodnota2¶metr2=hodnota2. Problém mám s nečitelností (substituce mezer za %20) a tím pádem údržbou, Navíc chci poladit ještě nějaké věci (např. ověření zalogování do interního systému) a Firebug má s takto puštěným kódem problémy.

Teď zkouším tu myšlenku submitnout celý IBM form na náš server, ale zatím se nedaří - odmítá mi to zpracovat. Předpokládám, že tagy jako input či textarea nakonec protlačím, ale mám obavy, zda se přenese i obsah tabulky (je v ní 80% informací)

15.10.2009 12:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Tabulka přes formulář samozřejmě neprojde, posílají se tam jen data z formulářových polí.

Pokud jde jenom o ten JavaScript, můžete si bookmarkletem vložit jen krátký skript, který vloží do stránky externí skript nahraný někde na webovém serveru.
15.10.2009 15:12 Ladislav Nešněra | skóre: 30 | blog: ..+2
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Moc dík - to mi ušetřilo spoustu času. Já tušil, že tabulka bude zrada.

Jinak problém je vyřešen. Přitažení externího scriptu jsem ověřoval na lokále. Při aplikaci na IBM webu mi selhal a já to chybně vyhodnotil jako security a ona zrada byla v tom, že ty stránky jsou řešeny pomocí frame. Sice jsem zastříhal ušima při pohledu na tahání knihoven pro AJAX Cross Domain, ale nedocvaklo mi to.

Přikládám použitý kód, byť rozhozený do řádků, aby byl čitelnější. Třeba se bude někomu hodit. Kvůli omezené délce a substituci jsem se snažil vyhýbat mezerám a volit jednoznakové proměnné. Timeout je použit pro to, aby se stihla knihovna, která tu fci obsahuje, před voláním načíst (vylepšením se nebráním ;-))
u="myURL/ibm2gc.js";
w=this.frames[1].frames[0];
var nacteno;
function aJS(){
  if(!nacteno){
    d=w.document;
    s=d.createElement("script");
    s.type="text/javascript";
    s.src=u;
    d.getElementsByTagName("head")[0].appendChild(s);
    nacteno=true;
    setTimeout("w.ibm2gc()",100)
  }
  else{ibm2gc()}
}
aJS()

Takhle vypadá v bookmarku (a to je mnohem čitelnější, než původní řešení)

javascript:u="myURL/ibm2gc.js";w=this.frames[1].frames[0];var%20nacteno;function%20aJS(){if(!nacteno){d=w.document;s=d.createElement("script");s.type="text/javascript";s.src=u;d.getElementsByTagName("head")[0].appendChild(s);nacteno=true;setTimeout("w.ibm2gc()",100)}else{ibm2gc()}}aJS()
15.10.2009 23:04 dark
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Složitě? Odeslat formulář přes ajax mi přijde snad ještě míň komplikované než používat třeba POST a následně redirect, ale je to otázka vkusu, to jo:)
16.10.2009 09:48 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak předat info z jedné webové stránky do web formuláře v jiné doméně?
Asi záleží na tom, čemu říkáte "AJAX" a čemu "odeslat formulář". Já si pod odesláním formuláře představuju odeslání HTTP požadavku, který je ekvivalentní odeslání klasického HTML formuláře z prohlížeče -- a tam musíte naprogramovat konverzi parametrů do správné formy a následně parsování odpovědi, kterou bude nejspíš HTML.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.