POST formulář přidává?do=searchForm-submit do URL
- jardaj
- Člen | 3
Ahoj,
mám jednoduchý formulář vytvářený v presenteru v továrničce
(createComponentSearchForm), odvozený z Nette\Application\UI\Form. Formulář
je POST.
Po odeslání formuláře se mi přidává do URL ?do=searchForm-submit
Potřeboval bych se toho zbavit. Problém je možná v routě, ale nevím si
s tím rady.
Neřešil to už někdo.
Díky moc, dost to spěchá.
Jarda
- enumag
- Člen | 2118
Někde na fóru jsem kdysi našel následující skript pro odstranění
parametru _fid
z URL. Jednoduchou úpravou můžeš stejným
způsobem odstranit parametr do
(nebo libovolný jiný).
if (window.history.replaceState) {
var l = window.location.toString();
var uri = l.indexOf('_fid=');
if (uri != -1) {
uri = l.substr(0, uri) + l.substr(uri + 10);
var last = uri.substr(uri.length - 1);
if (last == '?' || last == '&') {
uri = uri.substr(0, uri.length - 1);
}
window.history.replaceState('', window.document.title, uri);
}
}
Nefunguje v některých starších browserech…
Editoval enumag (14. 6. 2013 20:00)
- iguana007
- Člen | 970
Já bych se spíše přiklonil k návrhu od Glottis – tj. udělat
redirect po submitu.
Zbavíš se tak i toho, že pokud dá uživatel po submitu formu reload/refresh
stránky (a následně odklikne potvrzení o opětovném submitu – lidi moc
nečtou a slepě odklikávají), tak se ti ten form neodešle znovu, protože po
redirectu a následném reloadu/refreshi stránky opětovný submit formu
nenastane.
- Vojtěch Dobeš
- Gold Partner | 1316
Ten návrh s odstraněním pomocí Javascriptu je obzvlášť strašný :). Po úspěšném odeslání POSTového formuláře a jeho úspěšném zpracování by vždy mělo následovat přesměrování, takže na takové adrese nikdy uživatel neskončí. Může tam skončit jen pokud něco vyplnil blbě, a má se mu zobrazit chybová formulářová hláška. Pak může pomocí F5 zkusit formulář odeslat znovu.