Ik val maar meteen met de deur in huis. Ik heb twee selectboxjes. De eerste bevat locaties en de tweede bevat lokalen. Door een waarde uit de eerste te selecteren wordt een query opgebouwd welke alle lokalen van die geselecteerde locatie ophaald. Daar had ik een werkende code voor, echter wil ik het nu met ajax hermaken. Ik heb verschillende online tutorials gevold, en krijg wel een voorbeeld werkend met textfields, maar niet met een select.
De code:
test.php
- De resultaten komen binnen met http.responseText. Het resultaat komt dus op 1 regel binnen. Vraag is, hoe haal ik nu de verschillende resultaten uit die regel
- De options daarna aanmaken kan met new option, maar daarvoor moet ik weten hoeveel resultaten er zijn. De options moeten dan in de select lokalen komen.
De code:
HTML:
1
2
3
4
5
6
7
8
| <select style="width: 150px;" name="locatie" id="locatie" onchange="ZoekLokalen(this.value)"> <option value="1">Locatie 1</option> <option value="2">Locatie 2</option> <option value="3">Locatie 3</option> </select> <select style="width: 150px;" name="lokalen" id="lokalen"> </select> |
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
| var url = "test.php?para="; function handleHttpResponse() { if (http.readyState == 4) { var result = http.responseText.split(","); var optionText = result[0]; var optionValue = result[1]; } } function ZoekLokalen(locatie) { http.open("GET", url+locatie, true); http.onreadystatechange = handleHttpResponse; http.send(null); } function getHTTPObject() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlhttp; } var http = getHTTPObject(); |
test.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| require_once('../includes/classes.php'); $db = new dbase(); $locatie = $_GET['para']; $db->query('SELECT * FROM lokalen WHERE vestiging = "' . $locatie . '" AND pc_aanwezig = "1" ORDER BY lokaal_nr ASC'); while($result = $db->fetch_array()) { echo $result['lokaal_id'] . ',' . $result['lokaal_nr']; } |
- De resultaten komen binnen met http.responseText. Het resultaat komt dus op 1 regel binnen. Vraag is, hoe haal ik nu de verschillende resultaten uit die regel
- De options daarna aanmaken kan met new option, maar daarvoor moet ik weten hoeveel resultaten er zijn. De options moeten dan in de select lokalen komen.
[ Voor 10% gewijzigd door XWB op 13-01-2006 11:35 ]