Autor Zpráva
quatzael
Profil
Na svých stránkách mám přihlašování pomocí AJAXU, tak že pomocí PHP ověřím přihlašovací údaje, načtu SESSION a v javascriptu potom ještě reloaduju stránku. Jenže Opera dělá to, že když se uživatel přihlašuje poprvé, tak se ho zeptá na to, jestli chce heslo uložit. Jenže při tom se zastaví na mým ajaxovým scriptu a nevrátí to na původní stránku. Prostě hodí do adresového řádku odkaz na AJAX script a hotovo..
Chamurappi
Profil
Reaguji na quatzaela:
Prostě hodí do adresového řádku odkaz na AJAX script a hotovo..
A kde se tam vzala? Není to náhodou normální action? Není to tvé „nerespektování AJAXu“ jen obyčejná JS chyba, kterou jsi nějak způsobil během vyhodnocování formuláře?
Tak či tak se bez živé ukázky těžko dozvíš, jak svoji závadu opravit.
quatzael
Profil
Chamurappi:
Máš pravdu, mám tam formulář, s tímhle odkazem.. Ale ten ajax spouští jen button tlačítko, tak mě nenapadlo, že by to mohlo odeslat jako celej formulář opravím, to..
Díky.
Chamurappi
Profil
Reaguji na quatzaela:
Ale ten ajax spouští jen button tlačítko
To jako <button type="button">? Bez uvedeného type je výchozí hodnotou submit (vyjma starších Explorerů, kde je výchozí button).
quatzael
Profil
Chamurappi:
Mám tam:
<input type="button" />
CZghost
Profil
quatzael:
<input type="submit" value="Přihlásit se" /> nebo <button type="submit">Přihlásit se</button>. Jinak ti to nepůjde.
Chamurappi
Profil
Reaguji na quatzaela:
Ten by sám odesílat neměl v žádném prohlížeči.
Mimochodem, bez zapnutého JS se nepůjde přihlásit?


Reaguji na CZghosta:
Co to? Četl jsi vůbec dotaz?
CZghost
Profil
Chamurappi:
Nojo :)) Tak se omlouvám, mám zažitý, že formulář odesílající data většinou obsahuje tlačítko určené k odesílání, což je <input type="submit" /> :-)

quatzael:
Chamurappi má pravdu, lidé bez zapnutého JS se nebudou moci přihlásit. Zde bych volil klasické odesílání dat přechodem na stránku zpracovávající data a po úspěšném přihlášení provést redirect s nastartovaným session. Nevzpomínám si na žádnou stránku, kde by bylo přihlašování řešeno přes AJAX, i Facebook přihlašuje klasicky. Což znamená, že kód by vypadal nějak takhle:
<form action="prihlasit.php" method="post">
    <label for="jmeno">Přezdívka: <input type="text" placeholder="Například: Jack" /></label>
    <label for="heslo">Heslo: <input type="password" placeholder="Supertajné heslo" /></label>
    <input type="submit" value="Přihlásit se" />
</form>
A nepotřebuješ na to žádný Javascript, stačí jenom odeslat formulář a na straně serveru vyhodnotit data a porovnat je: v případě, že se shodují, přiřadit uživateli session, v případě neshody vypsat chybu. V obou případech budeš přesměrovávat na nějakou obsahovou stránku, kde bude skriptem PHP řízeno vypisování hlášek. Takhle jsi to taky ostatně chtěl :-)
quatzael
Profil
Chamurappi:
Asi to tak opravdu je, že opera automaticky odesílá formulář, potom co se tam klikne na button a sám prohlížeč vyzve k uložení hesla. Dal jsem tam ten atribut action pryč a teď to funguje..

CZghost:
Chamurappi má pravdu, lidé bez zapnutého JS se nebudou moci přihlásit.
Lidé bez zapnutýho js se sice nebudou moc přihlásit, ale i kdyby se přihlásili, tak by bez toho js na těch stránkách toho moc neudělali. Chápu, že může být argument, že každá stránka by měla být schopná fungovat i bez js, ale to je jako ovládat grafický editor bez myši. Prostě je jednoznačně lepší si vždycky tu myš sehnat. Navíc v dnešní době snad už ani nikoho nenapadne vypínat javascript, a to že by měl někdo prohlížeč bez javascriptu to snad je tak výjimečný jako černobílá televize.
Já jsem to původně měl tak jak to popisuješ, jenže jsem chtěl, aby byl uživatel schopen se přihlásit i během vyplňování formuláře a tam by se potom furt objevovaly ty hlášky o přesměrování, který řeším tady: Chrome, FireFox, Opera - zrušení upozornění na přesměrování
Chamurappi
Profil
Reaguji na quatzaela:
opera automaticky odesílá formulář, potom co se tam klikne na button
To je nesmysl.

Dal jsem tam ten atribut action pryč a teď to funguje.
Přítomnost atributu action nehraje roli, i formulář bez explicitně uvedeného action jde odeslat (odesílá se na adresu, která je právě nalistována). Máš tam něco jiného, co ti vytváří popisovaný guláš.

Navíc v dnešní době snad už ani nikoho nenapadne vypínat javascript
Já o tom čím dál častěji uvažuji, na mnoha webech jen brzdí a ruší (bohužel už jdou animace dělat i bez JS, takže proti nim si nepomůžu). Obecně motivace k jeho vypnutí, respektive k selektivnímu povolování, je nyní možná i vyšší než dřív.

Teď jsem si uvědomil, že moje otázka na zapnutý JS byla zbytečná — formulář jde samozřejmě odeslat i prostým odentrováním, nezávisle na tom, jestli v něm je <input type="submit">, takže je stejně výroba nějakého dalšího náhradního tlačítka nesmyslná. A dělat javascriptové zpracování formuláře jinak, než chytáním onsubmit na formuláři, mi přijde divné.
quatzael
Profil
Chamurappi:
i formulář bez explicitně uvedeného action jde odeslat (odesílá se na adresu, která je právě nalistována).
Právě, že i když tam to action nemám tak se formulář odešle, ale tentokrát na aktuální stránku, takže je to ok, protože to nezamrzne nikde na AJAXovým scriptu..
Asi se to opravdu dělo, jen tehdy když jsem to odcentroval..
CZghost
Profil
Chamurappi:
nezávisle na tom, jestli v něm je <input type="submit">,
Tak do tohoto se vložím. Na jednejch stánkách mají formulář k přihlášení a chybí tlačítko Přihlásit se. Říkám si, odentruju to a přihlásím se i tak. Nic se nestalo, mačkal jsem enter jak de*il a nic. Takže s tímhle argumentem nesouhlasím.
_es
Profil
CZghost:
Takže s tímhle argumentem nesouhlasím.
Chamurappi asi myslel normálny formulár, s normálnymi formulárovými prvkami, nie nejaké náhradné atrapy ovládané cez JS. Na akých „jedných stránkach“ to je?
CZghost
Profil
_es:
nie nejaké náhradné atrapy ovládané cez JS
Ty stránky zrovna nejsou proslulé používáním JS :-)

Na akých ‚jedných stránkach‘ to je?
Nechci jim tady dělat reklamu, ale když tě to tak zajímá, je to www.quake3world.com - Oficiální podpora pro hráče a level designery hry Quake 3 Arena. Dal jsem tam rozbíječ, aby adresa nebyla klikací. Můžeš si ji zkopírovat do adresního řádku ;-)
Moderátor jenikkozak: Rozbíječ odstraněn.

Vaše odpověď

Mohlo by se hodit

Nezapomeňte na odkaz na živou ukázku problému.

Prosím používejte diakritiku a interpunkci.

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