I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Slettet bruger
09. december 2001 - 22:31#1
Jeg tror desværre Request.Form.count er \"read only\" og kan altså ikke ændres.
Er det noget du skal bruge, fordi du har lavet en løkke gennem alle elementerne, og skal løbe igennem en gang til? Så er det nemlig ikke Request.Form.count, der skal nulstilles....
Hvert fald vil jeg mene, at du kan komme om ved tingene uden at nulstille/ændre Request.Form.Count - Desuden ville den jo angive et falsk antal elementer i samlingen \"Reqest.Form\", hvis du havde lov at ændre den.
Men hvis det er muligt, at ændre den hører jeg da også meget gerne med... det er jo ikke forbudt at blive klogere :o)
Det er nødvendigvis ikke Request.Form.count jeg vil nulstille.. Sagen er den at jeg fortager et POST og den side jeg poster til er en \"Tak for din bla bla\" ting. Og for at undgå et brugeren reposter informationerne (refresher browser vinduet) vil jeg gerne nulstill denne POST.
Jeg ved godt at man kan behandle informationerne og gemme disse i en session variabel og så redirecte til en anden side... men det kan jeg ikke rigtig bruge i min løsning.
Håber ovenstående giver mening.
Synes godt om
Slettet bruger
09. december 2001 - 23:04#5
du kan lave flg lille nummer:
Lad ikke \"tak\" siden poste informationerne i DBen, men den originale side... du kan bare poste siden til sig selv, og redirecte til \"tak\" siden.
Altså:
Formular side: -------------------------- <% If Request.ServerVariables(\"CONTANT_LENTGH\") > 0 Then
\' tilføj posterne i databasen
Response.Redirect(\"tak.htm\")
End If %> <html> <form action=\"<% = Request.ServerVariables(\"SCRIPT_NAME\") %>\"> ... formular </form> </html> ---------------------------
\"tak\" siden skal så bare være statisk HTML, eller bare ikke tilføje i databasen. Så kan brugeren \"refreshe\" alt hvad han gider.
Altså:
1) tjek, om der er posted en form.
Hvis ja: opdater DB og send viedere til \"tak\" (brugeren opdager aldrig, at han var på samme side som <FORM>\'en)
Hvis Nej: opdater IKKE databasen, men vis formularen til brugerinput. set formens ACTION atrribut til samme side (\"sig selv\").
Kan du se fidusen?
JEg tror endda f.eks IE kommer med en advarsel om at \"siden er forældet\" eller \"dette kræver at du sender dataerne igen\"-side, hvis brugeren tykker \"back\", men sansyneligheden for dette er ikke så stor som, at han trykker \"refresh\".
Synes godt om
Slettet bruger
09. december 2001 - 23:06#6
selve \"posten\" kan ikke nulstilles... den er en del af HTTP Request\'en, og ryger med fra brugeren, når han \"refresher\" uanset hvad du gør.
smajli >> Udemærket idé, jeg har også selv anvendt den før. Mit problem er at post formularen og \"takke\" er indkabslet i en funktion. og den eneste parameter jeg kalder i min funktion er indholdet af den postede formular. Eksempel
For j = 1 To Request.Form.Count Path = Path & \"&\" & Request.Form.Key(j) & \"=\" & Request.Form.Item(j) Next
Function parseForm(ByRef Path) If IsNull(Path) Then parseForm = \"<form action= method=><input type=text><input type=submit>\" Else parseForm = \"Tak for din et eller andet\" End If End Functon
Jeg kunne selvfølgelige sende nogle flere parametere til min funktion.. men så ødelægger det min arkitektur...
Synes godt om
Slettet bruger
09. december 2001 - 23:25#9
hmm... den var jo værre... så skal du jo måske bruge en session til at tjekke om brugeren har send formen.. (ved godt du var inde på, at du ikke gad sessions, men jeg ser ikke andre løsninger):
i global.asa (eller en side, som du er sikker på, at brugeren besøger):
Sub Session_OnStart Session(\"harSendtFormular\") = False End Sub
-------- Din funktion vil så være noget ala: -------
If Not Session(\"harSendtFormular\") Then For j = 1 To Request.Form.Count Path = Path & \"&\" & Request.Form.Key(j) & \"=\" & Request.Form.Item(j) Next end If
Function parseForm(ByRef Path) If IsNull(Path) Then parseForm = \"<form action= method=><input type=text><input type=submit>\" Else Session(\"harSendtFormular\") = True parseForm = \"Tak for din et eller andet\" End If End Functon
parseForm(Path)
Synes godt om
Slettet bruger
09. december 2001 - 23:28#10
.. tror den var nugenlunde rigtig.. håber, du ser ideen... altså:
Sæt sessionvariabelen til \"True\" når brugeren \"submitter\" formen.
Når du skal behandle de modtagne data: Tjek først, om sessionen er \"true\" - behandel ikke data (igen) hvis \"true\".
tja...en annen løsning kan jo også være en liten javascrpt variant...
Function parseForm(ByRef Path) If IsNull(Path) Then parseForm = \"<form action= method=><input type=text><input type=submit>\" Else %> <script> location.replace = \'DinURL\'; </script> <% End If End Function
dermed så vil de ikke kunne reloade den side som poster data...
den replacer nåværende element i history objektet med den siden du angir. med andre ord...la oss si du har følgende sider:
side1.asp side2.asp side3.asp
hvis du poster et formular fra side1 til side2 som igjen redirecter til side3, så vil du ved å klikke på back knappen gå til side 2 og deretter til side1 igjen.
Men hvis du benytter \'location.replace\' så vil du hvis du poster et formular fra side1 til side2 som replacer til side3 *ikke* lande på side2 ved klikk på din back knapp, men gå direkte fra side3 til side1...u c ?
Tak for alles jeres forslag. Gider du ikke nute at komme med et svar, så vil jeg dele pointene mellem dig og smajli eftersom i begge er kommet en række gode forslag.
Ja det gjorde jeg. Hele det dersens kode helvede genererede en mail, denne satte jeg ind i en tabel, men inden den bliver sat ind checkes der på om mailen allerede eksisterer i tabellen i forvejen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.