Ik ben bezig om de beginselen van Ajax onder mijn knie te krijgen en stuit op een relatief simpel probleem volgens mij. Ik heb een stukje code die het volgende doet:
1. men klikt op een link en een _GET wordt aangeroepen
2. de output van de _GET pagina moet verschijnen in een span
Het lukt wel, zolang ik een statische span meegeef, in het voorbeeld hieronder 'regel1' of 'regel2'. Echter als ik de functie uit wil breiden om het zaakje dynamisch te maken, dan gaat het mis. De code die wel werkt is als volgt:
Als ik nu alertContents() uitbreid met een parameter, bijvoorbeeld alertContents(targetSpan), dan werkt de functie niet. Wie kan mij een zetje in de goede richting geven? Mijn uiteindelijke doel is om voor elke link een eigen unieke target-span mee te geven. Hoe bereik ik dit?
1. men klikt op een link en een _GET wordt aangeroepen
2. de output van de _GET pagina moet verschijnen in een span
Het lukt wel, zolang ik een statische span meegeef, in het voorbeeld hieronder 'regel1' of 'regel2'. Echter als ik de functie uit wil breiden om het zaakje dynamisch te maken, dan gaat het mis. De code die wel werkt is als volgt:
HTML:
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
| <html> <head> <title>Ajax test</title> <script type="text/javascript" language="javascript"> var http_request = false; function makeRequest(url, parameters, targetSpan) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { // set type accordingly to anticipated content type //http_request.overrideMimeType('text/xml'); http_request.overrideMimeType('text/html'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Cannot create XMLHTTP instance'); return false; } //alert(targetSpan); http_request.onreadystatechange = alertContents; http_request.open('GET', url + parameters, true); http_request.send(null); } function alertContents() { targetSpan = 'regel2'; if (http_request.readyState == 4) { if (http_request.status == 200) { result = http_request.responseText; document.getElementById(targetSpan).innerHTML = result; } else { alert('There was a problem with the request.'); } } } </script> </head> <body> <table border="1"> <tr> <td>link</td><td>span1</td><td>span2</td> </tr> <tr> <td><a onclick="javascript:makeRequest('input.html', '?','regel2');" href='#'>klik!</a></td> <td><span name="regel1" id="regel1"></span></td> <td><span name="regel2" id="regel2"></span></td> </tr> </table> </body> </html> |
Als ik nu alertContents() uitbreid met een parameter, bijvoorbeeld alertContents(targetSpan), dan werkt de functie niet. Wie kan mij een zetje in de goede richting geven? Mijn uiteindelijke doel is om voor elke link een eigen unieke target-span mee te geven. Hoe bereik ik dit?