Avatar billede webcreator Nybegynder
07. april 2003 - 15:19 Der er 23 kommentarer og
1 løsning

Data overført i URL går tabt ved redirect.

Hej.

Jeg har et ASP Dokument, der uploader en fil brugeren har valgt. Når upload er udført viderføres brugeren til en formular der skal udfyldes. I denne formular er filnavnet blevet overført til et "hidden" felt. Men da jeg skal sørge for, at brugeren udfylder SAMTLIGE felter, får jeg et problem. For når formularen sendes til "gemdata.asp", hvori der tjekkes om alle felter er udfyldt, så opstår mit problem. For hvis alle felter ikke er udfyldt, sendes brugeren tilbage til formen - men nu er filnavnet selvfølgelig forsvundet.

Nogen gode råd ?
Avatar billede kaptajnkemo Nybegynder
07. april 2003 - 15:23 #1
lav altid valideringen inden formularen sendes.

Det er nemmest.
Det er irriterende for brugeren at skulle loade en side for at finde ud af man har glemt at indtaste noget.

Du kan validere din form sådan her:

tilføjes i dit html formtag:
onsubmit(return testForm())

function testForm()
{
  if(document.form.felt.value =="")
    return false
  else
    return true;
}
Avatar billede kaptajnkemo Nybegynder
07. april 2003 - 15:23 #2
skulle selvfølgelig have været et svar :)
Avatar billede silentbob Nybegynder
07. april 2003 - 15:24 #3
kan vi få lidt koder? Måske kan dette hjælpe

mpg = "mproduktgruppe"
if produktgruppe = "" then
response.redirect("x.asp?fejl="&mpg&"&overskrift="&overskrift&"&tekst="&tekst&"&pris="&pris&"")
end if

Du sender det til samme side.

øverste:
fejl = request("fejl")
if fejl = "mproduktgruppe" then
error = "Du skal oprette produktgrupper før du kan oprette produkter"
end if

response.write error
Avatar billede -mundi- Nybegynder
07. april 2003 - 15:26 #4
du kan gemme det i en session variabel session("filnavn")=request("filnavn")

og så skrive det ud på den side man bliver redirected til
Avatar billede webcreator Nybegynder
07. april 2003 - 15:31 #5
Kaptajnkemo > Jeg er ikke interesseret i javascripts.

Mundi > Dit forslag lyder godt.
Men jeg forstår det ikke helt. Kan du komme med et bedre kodeeksempel ?
Avatar billede webcreator Nybegynder
07. april 2003 - 15:33 #6
- helt nøjagtig er jeg i tvivl om hvor meget jeg skal skrive - og hvor.
Mit system er upbygget således :

1. [uploadgfx.asp] - Upload [vidersender efter endt arbejde til punkt 2]
2. [edit.asp] ------ Indeholder formen der bliver valideret
3. [gemdata.asp] --- Her valideres indholdet af formen. Bruger sendes tilbage til edit.asp hvis et af felterne ikke er udfyldt.
Avatar billede webcreator Nybegynder
07. april 2003 - 15:34 #7
upbygget = opbygget :)
Avatar billede -mundi- Nybegynder
07. april 2003 - 15:38 #8
i gemdata.asp

if "et eller andet" then
  session("filnavn")=request("filnavn")
  response.redirect "edit.asp?mode=fil"
end if

i edit.asp

if request.querystring("mode")="fil" then
  response.write session("filnavn")
end if
Avatar billede silentbob Nybegynder
07. april 2003 - 15:41 #9
Webcreator, du kan benytte det jeg har skrevet...

den tjekker om feltet produktgruppe er tom, hvis den er det bliver du redirectet... og sender overskriften, teksten og prisen med til den samme side, således at det ikke skal udfyldes igen.
Avatar billede webcreator Nybegynder
07. april 2003 - 15:48 #10
mundi > Sagen er netop, at jeg samtidig skal have en fejlbesked med tilbage til edit.asp.  Og det kan jeg jo ikke nu, kan jeg ?
Avatar billede -mundi- Nybegynder
07. april 2003 - 15:50 #11
i gemdata.asp

if "et eller andet" then
  session("filnavn")=request("filnavn")
  response.redirect "edit.asp?mode=fil"
  session("besked")="hejsa"
end if

i edit.asp

if request.querystring("mode")="fil" then
  response.write session("filnavn")
  response.write session("besked")
end if
Avatar billede webcreator Nybegynder
07. april 2003 - 15:52 #12
Jeg skal både have sendt fejlmeddelse og filnavn tilbage. Kan jeg ikke have noget a la :

response.redirect("edit.asp?opd=<h2>Indtast venligst en værdi i alle felter</h2>"&AND&op2=<h2>varfil</h2>")
Avatar billede webcreator Nybegynder
07. april 2003 - 15:52 #13
prøver jeg lige.
Avatar billede -mundi- Nybegynder
07. april 2003 - 15:54 #14
ja det kan du sagtens, men så har man mulighed for at ændre de data du sender med over ved at ændre i querystring'en.. det er ikke sikkert det er et problem i dit tilfælde, du skal bare være opmærksom på at man kan :-)
Avatar billede webcreator Nybegynder
07. april 2003 - 15:59 #15
Hvis jeg har mit filnavn liggende i en variabel, kan jeg så gøre sådan :
  session("filnavn")=var6
Avatar billede -mundi- Nybegynder
07. april 2003 - 16:04 #16
ja
Avatar billede webcreator Nybegynder
07. april 2003 - 16:17 #17
Jeg kan ikke helt få det til at virke. Har flg. kode :

Edit.asp :
<%

if request.querystring("mode")="fil" then
  response.write session("file")
  response.write session("besked")
end if

response.write besked

%>


gemdata.asp :
' Hvis feltet er tomt, sendes brugeren tilbage til formen, med besked om at udfylde feltet
If var1 = "" OR var2 = "" OR var3 = "" OR var4 = "" OR var5 = "" OR var6 = "" Then
  session("file")=var6
  response.redirect "edit.asp?mode=fil"
  session("besked")="hejsa"
end if
Avatar billede webcreator Nybegynder
07. april 2003 - 16:17 #18
Jeg har omdøbt "filnavn" til "file", da det er dette variabelnavn, der indsættes i min skjulte form.
Avatar billede webcreator Nybegynder
07. april 2003 - 16:19 #19
Hm, faktisk vil jeg helst overføre både filnavn og besked i URLen. Hvordan gør jeg det ? FOr jeg er ret overbevist om, at mit forslag ikke virker :)
Avatar billede -mundi- Nybegynder
07. april 2003 - 16:19 #20
<%

if request.querystring("mode")="fil" then
  response.write session("file")
  response.write session("besked")
end if
response.write besked

%>


gemdata.asp :
' Hvis feltet er tomt, sendes brugeren tilbage til formen, med besked om at udfylde feltet
If var1 = "" OR var2 = "" OR var3 = "" OR var4 = "" OR var5 = "" OR var6 = "" Then
  session("file")=var6
  session("besked")="hejsa"
  response.redirect "edit.asp?mode=fil"
end if
Avatar billede -mundi- Nybegynder
07. april 2003 - 16:20 #21
<%

if request.querystring("mode")="fil" then
  response.write request.querystring("file")
  response.write request.querystring("besked")
end if
response.write besked

%>


gemdata.asp :
' Hvis feltet er tomt, sendes brugeren tilbage til formen, med besked om at udfylde feltet
If var1 = "" OR var2 = "" OR var3 = "" OR var4 = "" OR var5 = "" OR var6 = "" Then
  session("file")=var6
  session("besked")="hejsa"
  response.redirect "edit.asp?mode=fil&besked=hovsa du mangler at udfylde et eller andet&file="&var6
end if
Avatar billede webcreator Nybegynder
07. april 2003 - 16:31 #22
Well, jeg fik det hele lavet lidt om - men nu passer det. Mange tak for hjælpen :o)
Avatar billede -mundi- Nybegynder
07. april 2003 - 16:33 #23
selv tak
Avatar billede kaptajnkemo Nybegynder
07. april 2003 - 17:15 #24
Sådan af ren nysgerrighed....

Hvorfor vælger du den løsning i stedet for at validere formen inden den bliver sendt, og på klientens egen maskine?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester