Else-sats som vägrar att _inte_ köras

ASP

20 svar · 277 visningar · startad av SPiN

Medlem sedan mars 20007 896 inlägg
Trådstart#1

Jag vet inte om det är jag eller om det är datorn som det är ett allvarligt fel på.

Mitt formulär:

<form action="sida.asp" method="POST">
<input type="hidden" name="fld1" value="val1">
<input type="hidden" name="fld2" value="val2">
<input type="submit" name="minKnapp" value="knappValue">
</form>

När jag sedan tar emot på mottagarsidan, tar den emot precis som den ska. Dock funkar inte If-satsen som den ska, eftersom att Else-blocket körs, oavsett om If och ElseIf stämmer.

If Request.Form ( "minKnapp" ) = "knappValue" And Request.Form ( "fld1" ) <> "" And Request.Form ( "fld2" ) <> "" Then
&nbsp; ' Gör nåt.
ElseIf Request.QueryString ( "fld1" ) <> "" And Request.QueryString ( "fld2" ) <> "" Then
&nbsp; ' Gör nåt annat.
Else
&nbsp; Response.Redirect "Felhantering.asp"
End If

Vad som än skrivs in i formuläret, så skickas man vidare till Felhantering.asp. VARFÖR?!

Är det någon som har upplevt samma fel tidigare, och hur fasen löser man det?

MaH,

Medlem sedan dec. 200012 464 inlägg
#2

Byt querystring mot form.

Medlem sedan mars 20007 896 inlägg
#3

Varför? Jag vill ju kolla om det är form-värden som skickas, eller om det är querystrings. Man kan skicka informationen på två olika sätt nämligen.

Medlem sedan feb. 20012 412 inlägg
#4
If cstr(Request.Form ( "minKnapp" )) = "knappValue" And len(Request.Form ( "fld1" )) > 0 And len(Request.Form ( "fld2" )) > 0 Then
  ' Gör nåt.
ElseIf len(Request.QueryString ( "fld1" )) > 0 And len(Request.QueryString ( "fld2" )) > 0 Then
  ' Gör nåt annat.
Else
  Response.Redirect "Felhantering.asp"
End If

Har varit med om att det blivit knas och skriva "" om det är fel subtyp. Eftersom fältet antagligen kan vara null kan man inte använda cstr, för då blir det fel, det är därför säkrare med len.

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#5

Nej, det kanske inte var så relevant svar.

Om du gör en utskrift på allt då

response.write "k:" & Request.Form ( "minKnapp" ) & ":k"
response.write "f1:" & Request.Form ( "fld1" ) & ":1f"
response.write "f2:" & Request.Form ( "fld2" ) & ":2f"

response.write "q1:" & Request.querystring ( "fld1" ) & ":1q"
response.write "q2:" & Request.querystring ( "fld2" ) & ":2q"

eller du kanske har gjort det?

Medlem sedan mars 20007 896 inlägg
#6

Redan försökt att omvandla till andra typer och att använda Len (). Hjälper inte ett jota, tyvärr! :l

Grejjen är den, att om man tar bort hela Else-blocket, så stämmer allt. Kan inte köra så dock, eftersom att det blir en säkerhetslucka...

Jag har aldrig varit med om något liknande tidigare, det här är helskumt!

Red.} LarsG> Japp, det har gjorts... Alla värden stämmer, dom finns där.

Medlem sedan mars 20007 896 inlägg
#7

Det är något riktigt allvarligt fel på någonting! x(

Följande kod skriver ut "ID:et finns":

If Trim ( cStr ( Request.Form ( "replyThread" ) ) ) = "Skicka!" And Len ( Request.Form ( "threadID" ) ) > 0 And Len ( Request.Form ( "forumID" ) ) > 0 Then
&nbsp; &nbsp; id = Request.Form ( "threadID" )
ElseIf Request.QueryString ( "threadID" ) <> "" And Request.QueryString ( "forumID" ) <> "" Then
&nbsp; &nbsp; id = Request.QueryString ( "threadID" )
End If

If id <> "" Then
&nbsp; &nbsp; Response.Write "ID:et finns"
Else
&nbsp; &nbsp; Response.Write "ID:et finns INTE!"
End If
Response.End

Följande kod redirectar till Felhantering.asp:

If Trim ( cStr ( Request.Form ( "replyThread" ) ) ) = "Skicka!" And Len ( Request.Form ( "threadID" ) ) > 0 And Len ( Request.Form ( "forumID" ) ) > 0 Then
&nbsp; &nbsp; id = Request.Form ( "threadID" )
ElseIf Request.QueryString ( "threadID" ) <> "" And Request.QueryString ( "forumID" ) <> "" Then
&nbsp; &nbsp; id = Request.QueryString ( "threadID" )
End If

If Trim ( cStr ( id ) ) = "" Then
&nbsp; &nbsp; Response.Redirect "Felhantering.asp"
End If

Det är helt sjukt!
Villkoren stämmer, om man går in på sidan med värden i querystringen, men inte via formulär med POST!

Snart ger jag upp ASP:en helt... "#%¤#&%/&/%. :x

Medlem sedan juni 20019 024 inlägg
#8

Verkar vara ett väldigt krångligt tillvägagångsätt du har valt om man kan posta från två olika fält. Lägg till en "action" variabel för varje forumlär i så fall:

<INPUT TYPE="hidden" NAME="action" VALUE="namn_för_querystrings">
<INPUT TYPE="hidden" NAME="action" VALUE="namn_för_form">

Sedan tar du emot det på följande vis:

If Request("action") = "namn_för_XXX" Then
 ' Blä
Else
 ' Bla
End If
Medlem sedan mars 20007 896 inlägg
#9

Grejjen är den att man inte kan posta information på två olika sätt, utan endast med POST. GET används när man klickar på en länk från en annan sida.

Självklart skulle jag kunna göra som du visar ändå, men jag tycker inte att det blir lättare. Mindre koll på vad som händer, känns det som... Min kod BÖR ju fungera, det är något klurigt med ASP-tolken/motorn bara. :x

Medlem sedan juni 20019 024 inlägg
#10

Nä, nu gör du som jag säger! ;)

Så här är väl inte så krångligt:

Select Request.Method
Case "POST"
 ' Gör vad du nu ska göra med det postade forumläret.
Case "GET"
 ' Gör nåt med länken.
End Select
Medlem sedan mars 20007 896 inlägg
#11

Då måste jag göra om en massa, ju! :(

Jag väntar på LarsG, Vide, emission, @nders eller ett smartare svar av dig. :e ;)

Ska se vad jag kan göra... Finns många olika sätt att göra på.

Medlem sedan mars 20015 287 inlägg
#12

Du har prövat att startat om systemet? Tycker det verkar väldigt konstigt att det inte funger ar om du verkligen har skrivit som du skriver.

Medlem sedan mars 20007 896 inlägg
#13

Jadå, jar har provat ALLT! Nästan.

Jag får väl bygga om skiten ändå... :x

Medlem sedan dec. 20003 563 inlägg
#14
<%
If Len(Trim(Request.Form( "fld1" ))) > 0 And Len(Trim(Request.Form( "fld2" ))) > 0 Then
  ' Gör nåt!!!
Else
  Response.Redirect "Felhantering.asp"
End If
%>

???

r/ Funkar i resten av världen vad jag vet i alla fall ;)

Medlem sedan juni 20019 024 inlägg
#15

Då måste jag göra om en massa, ju!

Och jag som trodde det var bättre att ha en bra stuktur i min kod... :OO

Jag väntar på LarsG, Vide, emission, @nders eller ett smartare svar av dig.

:OO

Ska se vad jag kan göra... Finns många olika sätt att göra på.

Och det bästa är återigen att göra det så strukturerat och enkelt som möjligt. Med andra ord är det bäst att skriva om koden.

Medlem sedan mars 20007 896 inlägg
#16

Hm, du vet ju inte hur resten av min kod ser ut, så det där håller egentligen inte. :)

Men självklart är det bra med strukturerad kod, det har jag alltid. Däremot har jag ovanan att försöka hålla ned på antalet olika dokument, och använda samma dokument till flera saker. Det är därför det här problement uppstod...

Jag som verkligen inte vill använda Pace's alternativ blir väl tvungen till det nu. Jäbbrans. §e ;)

Medlem sedan mars 20015 287 inlägg
#17

Är du säker på att det inte är något annat på sin sida spm gör att du hamnar på Felhantering.asp då?
Kanske en dum fråga men ofta brukar ju felen vara enkla men man ser dom inte.

Medlem sedan mars 20007 896 inlägg
#18

100% säker. Har testat att skicka till en annan sida i else-blocket, och då skickas jag dit.

Medlem sedan juni 20019 024 inlägg
#19

SPiN: Läs och begrunda!

Medlem sedan mars 20007 896 inlägg
#20

Bah. Det där är för sissys! Jag använder egna COM-objekt och templates! Det är grejjer, man får riktigt bra koll på sina sidor, dokumenten som man skriver är 100% pure ASP ( nästan ) och vilken kontroll! :o

262 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)