Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno ASP Response.Redirect pro metodu POST

Zdědil jsem ASP skripty na intranetu a formuláře jsou dělané metodou GET.

Problém je v tom, že původní předpoklad, že obsah polí bude krátký už neplatí a potřeboval bych to předělat na metodu POST. V ASP se bohužel moc neorientuju. Vím, že je potřeba změnit request.querystring na request.form, ale mám problém s tím, tak nahradit ve skriptu test.asp, který testuje obsah formuláře

Response.Redirect("add_update_and_delete.asp?smazat="&usubmit1& "&update="&usubmit2& "&zneplatnit="&usubmit3&)

abych to mohl předat data dál ze skriptu test.asp do skriptu add_update_and_delete.asp opět metodou opět POST.

Našel jsem řešení přes session a cookies, ale ani jednu z těchto věcí jsem nikdy nepoužíval a tak se v nich tak nějak ztrácím. :-(

Nevíte ještě o nějakém jiném řešení, které by bylo pro laika průhlednější?

Předmět Autor Datum
Nie som expert na asp ale IMHO namiesto redirectu na inu linku budes musiet zadefinovat formular (fo…
MM.. 06.02.2007 18:54
MM..
Děkuji za odpověď, ale toto neřeší můj problém. Potřebuji mezi formulář odeslaný metodou POST a skr…
yorg 06.02.2007 19:17
yorg
Ja viem co potrebujes, ja by som to nacpal do jedneho scriptu :-) Zhlavy neviem ako prenasat data me…
MM.. 06.02.2007 19:39
MM..
no ak sa nemylim, tak redirect by nemal samovolne menit metodu(POST, GET), ktoru obdrzal. cize ked a…
IgorK 06.02.2007 20:02
IgorK
Nemal by, ale mení.
los 06.02.2007 20:14
los
co som cital, tak to mozu sposobovat len starsie prehliadace, ktore nepodporuju http 1.1. ale ak mas…
IgorK 06.02.2007 20:18
IgorK
Mám praktické skúsenosti. edit: resp. keď pošleš 307 Temporary redirect, tak sa prehliadač spýta, č…
los 06.02.2007 20:30
los
To, že by to bylo tak jednoduché mě nenapadlo. Díky vyzkouším to. Za pokus se nic nedá.
yorg 06.02.2007 20:19
yorg
Response.Redirect vyzerá tak, že server pošle odpoveď prehliadaču, že choď na túto stránku, pričom v…
los 06.02.2007 20:13
los
Server.Execute To by taky mohlo jít. Díky všem za tipy.
yorg 06.02.2007 20:21
yorg
Ja robím pod ASP, Server.Execute som ešte nepoužíval, ale používam - SERVER.TRANSFER. Rozdiel medzi… poslední
Len tak 06.02.2007 21:20
Len tak

Děkuji za odpověď, ale toto neřeší můj problém.

Potřebuji mezi formulář odeslaný metodou POST a skriptem, který zapisuje do databáze vložit ještě jeden další skript v asp a po jeho dobrozdání, že je vše OK to poslat dále na ten skript, co to napíše do db. To vše metodou POST, protože zapisovaný text bývá delší jak povolených cca 2kB. U metody GET to fungovalo přes response.redirect.

Jde o to jestli to jde i jinak než přes session nebo cookie. Tyto postupy jsem našel, ale přiznám se, že jim moc nerozumím. Proto jsem se ptal jestli existuje i jiná možnost.

Ja viem co potrebujes, ja by som to nacpal do jedneho scriptu :-)
Zhlavy neviem ako prenasat data medzi ASP sktriptami, tak ako by si si to predstavoval to ale nejde, POST/GET su na citanie dat od pouzovatela a nie z ineho skriptu. Pozri tu linku je tam popisane dost zrozumitelne zaklady aj ASP, session aj cookie, co sa tyka bezpecnosti treba si uvedomit ze cookie je na lokalnom PC (pouzivatelovom).
O prenasani dat medzi ASP skriptami som tam narychlo nic nenasiel ale pohladaj, resp. mozes porozumiet aj session aj cookies, je to tam popisane strucne a dost zrozumitelne.

Response.Redirect vyzerá tak, že server pošle odpoveď prehliadaču, že choď na túto stránku, pričom v tej odpovedi je iba adresa a žiadne dáta z formulára. Prehliadač potom ide na tú stránku a pôvodné dáta z formulára neposiela, takže ich musíš spracovať vtedy, keď ich pošle. Použiť cookies alebo session sa síce dá, ale nie je to ideálne.

Najlepšie je to spraviť tak, že to spracuješ priamo na tej stránke.

Prípadne si pozri metódy Server.Transfer a Server.Execute, ktoré odovzdávajú riadenie medzi skriptami priamo na serveri. Server.Transfer odovzdá riadenie druhému skriptu a v pôvodnom skripte ďalej nepokračuje. Server.Execute vykoná volaný skript a pokračuje ďalej vo vykonávaní pôvodného skriptu.

Ja robím pod ASP, Server.Execute som ešte nepoužíval, ale používam - SERVER.TRANSFER. Rozdiel medzi EXECUTE a TRANSFER je v tom, že po volaní EXECUTE IIS pokračuje v stránke - dočíta ju do konca, kdežto TRANSFER ukončí po presmerovaní dočítanie - je to niečo ako REDIRECT s rozdielom, že sa nezmení URL adresa. Dúfam, že som to dobre napísal, dneská fetujem - mysľou.

Zpět do poradny Odpovědět na původní otázku Nahoru