/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Request.querystring vs. Request.Form
Fra : Jimmy


Dato : 05-09-03 14:08

Hey

Har dannet en streng lign. denne:

side.asp?felt=1&felt=2&felt=3

Lig mærke til at jeg bruger navnet felt for alle værdier. Det skulle kunne
resultere i at jeg bare kunne sige:

for each feltvaerdi in request.querystring("felt")
....
Next

Det virker fint, men på et tidspunkt for jeg en fejl fordi min action=
attribut på formen tilsyneladende ikke kan klare mere. Jeg sætter godt nok
action i Javascript, men mit gæt er at enten er der en begrænsning i action
attributten eller også er der en begrænsning i hvor mange tegn der kan være
i querystrengen. Kan jeg ikke have ret i dette?

Lige nu har jeg løst problemet ved i stedet at smide alle mine felt værdier
ned i et hidden felt, og derefter køre en request.form. Min Request.Form
returnere så værdien 1, 2, 3 (kommaet har jeg også selv sat ind.)

Desværre kan jeg ikke bruge min for next lykke, da den første værdi vil være
hele strengen, så jeg har måtte lave en manuel løkke og brugt pos og mid til
at skille strengen ad.

Er der en fysisk begrænsning på hvor mange tegn der må være i et <input
type="text"> felt?

Er der en fysisk begrænsning på hvor mange tegn der må være i Request.Form?

Er der en måde hvorpå jeg kan køre for next løkke ved hjælp af mine felt
værdier?

Håber der er nogen der kan kaste lidt lys over sagen/sagerne :)


Jimmy



 
 
Mark S. Rasmussen (05-09-2003)
Kommentar
Fra : Mark S. Rasmussen


Dato : 05-09-03 15:26

> Lig mærke til at jeg bruger navnet felt for alle værdier. Det skulle kunne
> resultere i at jeg bare kunne sige:

Er der en grund til at du bruger querystring? Umiddelbart lyder det i mine
ører somom du kommer værdierne fra en form op i querystring, herved kan du
netop kun tilgå dem vha Request.QueryString. Hvis du i stedet submitter din
form (husk method="post" i dit <form> tag), så kan du tilgå felterne med
Request.Form(), og således kan du sende meget mere data med.

Der er sikkert en begrænsning, men jeg tvivler stærkt på det er den du er
stødt på.

Mvh Mark
--
www.improve.dk - Din guide til .NET udvikling!



Jens Gyldenkærne Cla~ (05-09-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-09-03 22:27

Jimmy skrev:

> Det virker fint, men på et tidspunkt for jeg en fejl fordi min
> action= attribut på formen tilsyneladende ikke kan klare mere.

Hvilken fejl? Har du udskrevet debuginformation?

> Jeg sætter godt nok action i Javascript

Hvorfor?

> , men mit gæt er at enten er der en begrænsning i action
> attributten eller også er der en begrænsning i hvor mange tegn
> der kan være i querystrengen. Kan jeg ikke have ret i dette?

Der er en begrænsning på querystrings - den er så vidt jeg husker
ikke fastlagt af nogen standarder, men alene browserbestemt. Det
har vist været oppe i denne gruppe før - prøv evt. at google efter
svaret. Grænsen er dog på over 1000 tegn - så vidt jeg husker var
det ca. 2000 for nogle (ældre) browsere, og ca. det dobbelte for
nyere browsere.

Umiddelbart tror jeg ikke at det er her dit problem er - men jeg
ved så heller ikke hvor lange dine querystrings bliver.

> Lige nu har jeg løst problemet ved i stedet at smide alle mine
> felt værdier ned i et hidden felt, og derefter køre en
> request.form.

Du kunne nøjes med at skifte fra GET til POST - så får du de samme
felter med Request.Form.

> Desværre kan jeg ikke bruge min for next lykke, da den første
> værdi vil være hele strengen, så jeg har måtte lave en manuel
> løkke og brugt pos og mid til at skille strengen ad.

Kig på funktionen split der deler en streng op som et array.
Dokumentationen kan findes med Google, men et gæt på en brugbar
syntaks er:

   Dim felt1Total, felt1Array, felt1
   felt1Total = Request.Form("felt1")    
   felt1Array = split(felt1Total, ",")
   For Each felt1 In felt1Array
       ...
   Next

Men hvis du kan bruge For Each x In Request.Querystring("felt1")
kan du garanteret også bruge For Each x In Request.Form("felt1)
hvis blot du skifter method til POST.


> Er der en fysisk begrænsning på hvor mange tegn der må være i
> et <input type="text"> felt?

Det tror jeg ikke, men når du benytter GET skal alle formdata kunne
lægges i querystringen - og det kan sætte en begrænsning.


> Er der en fysisk begrænsning på hvor mange tegn der må være i
> Request.Form?

Ikke så vidt jeg ved. Det er muligvis serverafhængigt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste