Ik ben de laatste weken een beetje aan het spelen met AJAX en nu heb ik een pull down-menu gecreeerd voor mijn website.
In de menubalk zie je dan een balkje met de titel van het menu, daarnaast een pijltje wat naar beneden wijst. Als je daar op klikt klapt het menu uit. Echter als je redelijk snel (langzame dubbelklik) er op drukt draait het pijltje wel om maar word vervolgens de content niet weer gegeven.
Ik vermoed dat er iets mis is met mijn PHP-code waardoor deze pagina te traag laad, dus vandaar bij /14.
Echter mocht ik de php-code niet sneller krijgen dan moet er een soort buffer komen denk ik die wacht totdat de pagina is geladen.
Dit is mijn javascript die het menutje laat zien of laat verdwijnen:
Hoe lossen jullie zulk soort dingen op? Hoe zou ik eventueel zo'n buffer op kunnen zetten?
In de menubalk zie je dan een balkje met de titel van het menu, daarnaast een pijltje wat naar beneden wijst. Als je daar op klikt klapt het menu uit. Echter als je redelijk snel (langzame dubbelklik) er op drukt draait het pijltje wel om maar word vervolgens de content niet weer gegeven.
Ik vermoed dat er iets mis is met mijn PHP-code waardoor deze pagina te traag laad, dus vandaar bij /14.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| session_start(); //De laatste 10 berichten uit de database halen en weergeven include('inc/dbconnector.php'); include('inc/checklogin.php'); //geef start van de lijst echo "<ul>"; $result = mysql_query("SELECT pageID,title FROM page WHERE pageCat!=0 AND reqLevel <= $ulevel ORDER BY (pageID) DESC LIMIT 10"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { //geef voor elk database record een bullet lijst weer als anker printf("<li><a href=\"javascript://\" onClick=\"showPage(%s,'','$PHPSESSID')\">%s</a></li>", $row[0], $row[1]); } mysql_free_result($result); echo "</ul>"; |
Echter mocht ik de php-code niet sneller krijgen dan moet er een soort buffer komen denk ik die wacht totdat de pagina is geladen.
Dit is mijn javascript die het menutje laat zien of laat verdwijnen:
JavaScript:
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
| var showMenu = true; function showHideMenu(menuBlock,SID) { if(menuBlock == "archief") { var objID = "archiefBlock"; var serverPage = "archief.php?PHPSESSID=" + SID; var imgTag = "showHideArchiefImg"; } else if(menuBlock == "login") { var objID = "loginBlock"; if(loggedIn == false) { var serverPage = "loginForm.php"; } else if (loggedIn == true) { var serverPage = "login.php?PHPSESSID=" + SID + "&task=showuserinfo"; } var imgTag = "showHideLoginImg"; } else if (menuBlock == "calender") { var objID = "calenderBlock"; var serverPage = "calender.php?PHPSESSID=" + SID; var imgTag = "showHideCalenderImg"; } if(showMenu == true) { document.getElementById(imgTag).src = "images/layout/arrow_up.gif"; showMenu = false; var obj = document.getElementById(objID); xmlhttp.open("GET", serverPage); xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { obj.innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); } else { document.getElementById(imgTag).src = "images/layout/arrow_down.gif"; showMenu = true; document.getElementById(objID).innerHTML = ""; } } |
Hoe lossen jullie zulk soort dingen op? Hoe zou ik eventueel zo'n buffer op kunnen zetten?