Toon posts:

[ASP / Javascript] Probleem met submitten formulier

Pagina: 1
Acties:
  • 120 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo allemaal,

Ik zit met het probleem dat mijn formulier niet op de juiste manier gesubmit wordt in mijn Javascript. Let niet al te veel op mijn ASP-code, want daar ligt het probleem niet. Dat werkt goed. Het probleem zit zich echter in het volgende:

De onderstaande code genereerd een uitklapmenu dmv een 'roworder'. Aan de hand van dit roworder weet ik welk menu-item wordt uitgeklapt en welke gewoon 'dicht' moeten worden weergegeven. Wanneer ik op een dicht item klik moet dat gedeelte zich uitklappen en de pagina moet hetzelfde blijven.
Ik heb het nu zo gemaakt dat als ik op zo'n dicht item klik de roworder in een hiddenfield wordt gezet dmv een kleine javascript functie. Dat is het probleem ook niet, want het veld wordt gewoon gevuld. Vervolgens moet de javascript het formulier versturen zodat ik, wanneer de pagina ververst is, het roworder kan opvragen.
Nou zou ik zeggen dat het gewoon op de volgende manier zou moeten werken:
CurrentRowOrder = request.form("hidlinkreference")
Nu zit ik met het probleem dat er niets wordt verstuurd. Misschien gaat er iets fout in de javascript of kan het wellicht niet eens op deze manier..

Kan iemand mijn probleem oplossen??

Alvast bedankt!

Sjaakel


ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<%
CurrentRowOrder = request.form("hidlinkreference")
response.write CurrentRowOrder
        

    rs.open "SELECT * FROM qryVertMenu", conn

    
    If rs.EOF = false Then


        do
    
            If CurrentRowOrder > 0 Then
            
                If CurrentRowOrder = rs.fields("tblvertmenus.roworder") Then 
                    CurRO = rs.fields("tblvertmenus.roworder")
                
                    If Switch = 0 Then %>
                    
                        <!-- HEADITEM -->
                        <b><a Onclick="<%Session("roworder") = CurRO %>" href=""><%=rs.fields("MenuName")%></a></b><br> <%
                        Switch = 1  
                    Else 
                        rs2.open "SELECT * FROM qryVertMenu WHERE tblvertmenus.roworder=" & rs.fields("tblvertmenus.roworder"), conn        
                        
                            If rs2.eof = false Then
                                do 
                                CurRO = rs2.fields("tblvertmenus.roworder")%>                               
                                
                                    <!-- SUBITEM -->
                                    &nbsp;&nbsp;
                                    
                                    <a Onclick="<%Session("roworder") = CurRO %>" href="<%=rs2.fields("linkreference")%>"><%=rs2.fields("ItemName")%></a><br>   <%
                                    
                                rs2.movenext
                                loop until rs2.eof
                            End if
                    End if
                    
                Else
                    If rs.fields("tblvertmenus.roworder") = iPreviousRowOrder Then
                        '
                    Else    %>
                        <!-- HEADITEM -->
                        <b><a Onclick="Direct('<%=rs.fields("tblvertmenus.roworder")%>')" href=""><%=rs.fields("MenuName")%></a></b><br>    <%
                    End If              
                End If
                                            
            Else    
                If rs.fields("tblvertmenus.roworder") = iPreviousRowOrder Then  
                    '               Else    %>
                    <!-- HEADITEM -->
                    <b><a Onclick="<% Session("roworder") = rs.fields("tblvertmenus.roworder")%>" href=""><%=rs.fields("MenuName")%></a></b><br>    <%
                End If
            End If  
            
            iPreviousRowOrder = rs.fields("tblvertmenus.roworder")
                        
            rs.movenext

        loop until rs.eof

    end if



%>

<form name="frmhid" method="post" action="default.asp">
    <input type="text" name="hidlinkreference"> 
</form>



            
<SCRIPT LANGUAGE=javascript>
<!--

function Direct(roworder){  
    
    frmhid.hidlinkreference.value = roworder ;
    
    document.frmhid.submit();   
    
}
    

//-->
</SCRIPT>

<%

rs.close
rs2.close

%>

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat voor foutmelding krijg je als je die javascript functie uitvoert?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Plaats eens de uitvoer van je ASP?
Als ik even gauw kijk voer je het volgende uit:
JavaScript:
1
<a Onclick="">

Je kent alleen een waarde toe aan je sessie, die schrijf je nergens uit middels een response.write of <%=...%>

Dus: kijk in de bron van de uitvoer.

Edit: niet bij alles trouwens. Sommige 'lijken' op het eerste gezicht wel goed te zijn.

[ Voor 14% gewijzigd door TeeDee op 30-11-2006 13:05 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Ik moet zeggen dat ik alleen nog maar naar deze tak aan het kijken was.
ASP.NET Visual Basic:
1
2
3
4
Else    %>
                        <!-- HEADITEM -->
                        <b><a Onclick="Direct('<%=rs.fields("tblvertmenus.roworder")%>')" href=""><%=rs.fields("MenuName")%></a></b><br>    <%
                    End If 


De rest is nog niet klaar/of klopt niet. De code die ik hierboven nogmaals laat zien zijn dus in dit geval de dik gedrukte menu-items hieronder in het voorbeeld. Maw: het zijn die hoofdmenu items (nr 1-2-3-5) die dicht worden weergegeven wanneer een ander menu-item uitgeklapt is.


MenuItem1
MenuItem2
MenuItem3

MenuItem4
---SubmenuItem1
---SubmenuItem2
---SubmenuItem3
MenuItem5

Zoals je kunt zien heb ik op dit moment dus ook alleen daar een juist Onclick Event achter zitten. Naar de rest moet je even niet kijken. Het probleem zit hem dus echt in dat mijn formulier met hiddenfield niet wordt gesubmit.
Wanneer ik hard in de code een roworder meegeef dan wordt het menu gewoon op de juiste manier weergegeven. Maar dat is nu dus niet het geval omdat die geen roworder binnenkrijgt.

Verwijderd

Topicstarter
BtM909 schreef op donderdag 30 november 2006 @ 12:59:
Wat voor foutmelding krijg je als je die javascript functie uitvoert?
Ik krijg geen foutmelding. De waarde wordt alleen niet meegestuurd.

  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Nogmaals: toon eens de uitvoer van je ASP script. (View source / Bekijk bron in je IE of Firefox)

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
                    <!-- HEADITEM -->
                    <b><a Onclick="" href="">Actueel</a></b><br>    
                    <!-- HEADITEM -->
                    <b><a Onclick="" href="">Competitie</a></b><br> 
                    <!-- HEADITEM -->
                    <b><a Onclick="" href="">Interactief</a></b><br>    
                    <!-- HEADITEM -->
                    <b><a Onclick="" href="">Informatie</a></b><br> 
                    <!-- HEADITEM -->
                    <b><a Onclick="" href="">Toto</a></b><br>   

<SCRIPT LANGUAGE=javascript>
<!--

function Direct(roworder){  
    
    frmhid.hidlinkreference.value = roworder ;
    
    document.frmhid.submit();   
    
}
    

//-->
</SCRIPT>



<form name="frmhid" method="get" action="default.asp">
    <input type="text" name="hidlinkreference"> 
</form>



Nu is die dus terecht gekomen in de de else-tak van het eerste IF-Statement. Er is geen roworder bekent dus print alleen de hoofdmenu-items op het scherm.

ASP.NET Visual Basic:
1
2
3
4
5
6
   If rs.fields("tblvertmenus.roworder") = iPreviousRowOrder Then    
                    '                Else    %>
                    <!-- HEADITEM -->
                    <b><a Onclick="<% Session("roworder") = rs.fields("tblvertmenus.roworder")%>" href=""><%=rs.fields("MenuName")%></a></b><br>    <%
                End If
            End If    

  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Drie keer raden waarom er niks gebeurd?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Ik hoop niet dat je hiermee wilt zeggen:

Er staat niks bij het Onclick-event. Want dat probeer ik hierboven al enkele malen uit te leggen.

Ookal maak ik er dit van..het formulier wordt niet verstuurd, maar wel gevuld.

code:
1
2
3
4
5
6
7
8
Else    
                If rs.fields("tblvertmenus.roworder") = iPreviousRowOrder Then  
                    '
                Else    %>
                    <!-- HEADITEM -->
                    <b><a Onclick="Direct('<%=rs.fields("tblvertmenus.roworder")%>')" href=""><%=rs.fields("MenuName")%></a></b><br>    <%
                End If
            End If



Als je dit niet bedoeld.. dan ben je de man en zou ik graag de oplossing horen. :)

[ Voor 3% gewijzigd door Verwijderd op 30-11-2006 14:06 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

Lijkt me een duidelijke gevalletje van het niet weten van het verschil tussen serverside en clientside als ik zo naar je initiele code kijk.

Wanneer denk je dat de "Session("roworder") = CurRO " wordt uitgevoerd in regel 34? Tip: Het is NIET op het moment dat je op de gegenereerde link drukt.

[ Voor 35% gewijzigd door Janoz op 30-11-2006 14:08 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Dat was inderdaad mijn bedoeling jah. Ik hou het er maar op dat ik jou niet goed begrepen had.

Wordt er wel een waarde in Direct('<%=..%>'); gezet?

Wat is nu trouwens de goede code? Je gebruikt POST en GET door elkaar in de verschillende code samples.

Ik heb trouwens nog steeds sterke twijfels bij je gebruik van het toekennen EN het aanroepen van je verschillende variabelen.


edit:
Janoz, dat jij dat zo gauw zie, ik moet er nog altijd 20x neer kijken om het door te krijgen in dit specifieke geval

[ Voor 35% gewijzigd door TeeDee op 30-11-2006 14:13 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Ik zie idd dat ik twee versies hier post. Dit is de versie zoals ik hem nu gebruik.

De versie waarin nog sessie stond was een eerdere versie en ben toen ook achter het verschil gekomen tussen serverside en clientside.


Wordt er wel een waarde in Direct('<%=..%>'); gezet?

Ja, dat wordt allemaal goed meegegeven. De javascript functie zet de juiste waarde ook in het hiddenfield. Alleen wordt het dus niet meegestuurd.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<%
    
    
    CurrentRowOrder = cInt(request.form("hidlinkreference"))
        

    rs.open "SELECT * FROM qryVertMenu", conn

    
    
    If rs.EOF = false Then


        do
    
            If CurrentRowOrder > 0 Then
            
                If CurrentRowOrder = rs.fields("tblvertmenus.roworder") Then 
                                    
                    If Switch = 0 Then %>
                    
                        <!-- HEADITEM -->
                        <b><a Onclick="doe iets" href=""><%=rs.fields("MenuName")%></a></b><br> <%
                        Switch = 1  
                    Else 
                        rs2.open "SELECT * FROM qryVertMenu WHERE tblvertmenus.roworder=" & rs.fields("tblvertmenus.roworder"), conn        
                        
                            If rs2.eof = false Then
                                do %>                               
                                
                                    <!-- SUBITEM -->
                                    &nbsp;&nbsp;
                                    
                                    <a Onclick="doe iets" href="<%=rs2.fields("linkreference")%>"><%=rs2.fields("ItemName")%></a><br>   <%
                                    
                                rs2.movenext
                                loop until rs2.eof
                            End if
                    End if
                    
                Else
                    If rs.fields("tblvertmenus.roworder") = iPreviousRowOrder Then
                        '
                    Else    %>
                        <!-- HEADITEM -->
                        <b><a Onclick="Direct('<%=rs.fields("tblvertmenus.roworder")%>')" href=""><%=rs.fields("MenuName")%></a></b><br>    <%
                    End If              
                End If
                                            
            Else    
                If rs.fields("tblvertmenus.roworder") = iPreviousRowOrder Then  
                    '
                Else    %>
                    <!-- HEADITEM -->
                    <b><a Onclick="Direct('<%=rs.fields("tblvertmenus.roworder")%>')" href=""><%=rs.fields("MenuName")%></a></b><br>    <%
                End If
            End If  
            
            iPreviousRowOrder = rs.fields("tblvertmenus.roworder")
                        
            rs.movenext

        loop until rs.eof

    end if



%>

<SCRIPT LANGUAGE=javascript>
<!--

function Direct(roworder){  
    
    frmhid.hidlinkreference.value = roworder ;
    
    frmhid.submit();    
    
}
    

//-->
</SCRIPT>



<form name="frmhid" method="post" action="default.asp">
    <input type="text" name="hidlinkreference"> 
</form>



            


<%

rs.close
rs2.close

%>

  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Nu wordt het niet meegestuurd?
Wordt je formulier wel gesubmit, maar de waarde (hidlinkreference) wordt niet gevonden?

Serieus: Ik snap nog maar de helft van je probleem, en de spaghetticode welke ik hier zo zie word ik helemaal kribbig van.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Sorry maar ben geen programmeur.

Ik zal proberen het probleem zo duidelijk mogelijk te beschrijven.

Wanneer men op een item in het menu klikt dan wil ik dat de functie Direct het juiste roworder in een hiddenfield zet (eerste menuitem heeft roworder 1, het tweede 2 etc).

Vervolgens wil ik dat wanneer de functie dat roworder in het veld heeft gezet het formuliertje wordt gesubmit. Zo kan ik doormiddel van:
CurrentRowOrder = cInt(request.form("hidlinkreference")) het 'nieuwe' roworder opvragen en dus weet ik welk item ik vervolgens moet uitklappen.


Wat nu het probleem is dat het roworder niet wordt verstuurd. Ik heb nu dus geen roworder tot mijn beschikking en dus krijg ik 5 'dichte' menu-items te zien.

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Ik zou je adviseren op het internet een te gaan zoeken naar een stukje standaard code om geneste lijstjes met links te maken. Je bent zeker niet de eerste die dit probeert op te lossen, en zoals ik het kan beoordelen ook zeker niet de beste (dat is niet onaardige bedoeld: zoek een stuk goede code, daar kun je meteen ook wat van leren).

Succes:)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Waarom ueberhaupt een form gebruiken? Ik zie ook geen echte reden voor een POST tov een GET dus ik zou gewoon dit doen:
HTML:
1
<a href="?hidlinkreference=ref">bla</a>

Intentionally left blank


  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

PhysicsRules schreef op donderdag 30 november 2006 @ 14:28:
Ik zou je adviseren op het internet een te gaan zoeken naar een stukje standaard code om geneste lijstjes met links te maken. Je bent zeker niet de eerste die dit probeert op te lossen, en zoals ik het kan beoordelen ook zeker niet de beste (dat is niet onaardige bedoeld: zoek een stuk goede code, daar kun je meteen ook wat van leren).

Succes:)
Als aanvulling: Google eens op "recursive tree" of iets dergelijks.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Sorry voor de in jullie ogen vage code, vreemde beredenaties etc, maar ik ben geen programmeur dus ik weet helaas niet beter.

Ik wil jullie toch bedanken voor de moeite en reacties. Ik zal jullie advies in acht nemen en eens op Google gaan zoeken.

  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Dat is ook helemaal geen probleem :), alleen is het vrij lastig om het e.e.a. te ontcijferen.

Kleed je probleem uit, probeer het te isoleren en probeer een testcase te maken.

Het allermakkelijkste is de optie van crisp. Geef je roworder in een link mee en lees dus uit met bijvoorbeeld request.querystring("hidlinkreference").

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Stel ik kies als hoofdmenu-item 'Competitie' en als submenu-item 'Teams'. Ik krijg een lijstje met alle teams in die competitie. Vervolgens wil ik zo'n team aanklikken om meer informatie te krijgen.

Dan krijg ik toch het probleem (omdat ik naar dieper genestelde pagina ga) dat mijn menu geheel ingeklapt is. Of ik moet in alle links erbij zetten dat die het roworder mee moet sturen.
Of denk ik verkeerd?

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Dat hangt ervan af hoe je data en progsel in elkaar zit. Als ik het goed zie heb je een menu met één subniveau. Dat houdt de boel simpel.

Het enige wat je nodig hebt is dat je weet wat je huidige pagina is. Maak dan een stuk code dat het menu opbouwt. Deze checkt voor het hoofditemmenu of het de parent is van de geselecteerde item en zo ja, geeft deze een andere class mee dan de andere submenu's.

Dan kun je verder met css bepalen of een menu is ingeklapt (of een andere kleur, wat je leuk vindt).
Pagina: 1