Ik maak in een php script gebruik van ajax en wel voor het volgende:
De gebruiker voert een postcode in in een tekstvel bij het verlaten van de focus wordt een php script uitgevoerd dat adhv de ingevoerde postcode gaat kijken wat het bijbehorende "ID" is van de postcode (omdat ik hier intern mee werk ipv de postcode..)..
Deze code (javascript is het volgende:)
De functie updatepc() wordt uitgevoerd na een onchange op het postcode tekstvak, de functie stelin) wordt opgeroepen vanuit updatepc() om een hidden tekstfield te vullen met het id dat schuilgaat achter de postcode..
en de phpcode die hiermee ook wordt uitgevoerd:
Nu het probleem:
- In firefox werkt dit perfect, het heeft nog nooit vastgelopen of gedaan wat het niet moet doen...
- in IE6 geeft het soms wel problemen, soms voert hij de php code uit en soms niet, ik heb getest met het doen uitvoeren van een alert(terug) in updatepc, en als ik niet het gewenste resultaat krijg te zien dan krijg ik een lege alert te zien..
Kan iemand me vertellen wat er verkkeerd is waarom dit niet in IE6 werkkt?
De gebruiker voert een postcode in in een tekstvel bij het verlaten van de focus wordt een php script uitgevoerd dat adhv de ingevoerde postcode gaat kijken wat het bijbehorende "ID" is van de postcode (omdat ik hier intern mee werk ipv de postcode..)..
Deze code (javascript is het volgende:)
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
40
| function updatepc(){ var XMLHTTPObject = new XMLHttpRequest(); XMLHTTPObject.open('GET', 'ajax/postcode.php?pc='+document.profiel.postcode.value, true); XMLHTTPObject.setRequestHeader("Cache-Control", "no-cache"); XMLHTTPObject.setRequestHeader("X_USERAGENT", "controleerpostcode"); XMLHTTPObject.send(null); //alert(XMLHTTPObject.readyState); XMLHTTPObject.onreadystatechange=function() { if (XMLHTTPObject.readyState==4) { terug = XMLHTTPObject.responseText; alert(terug); if(terug.length !=0){ document.getElementById('meerpostcodes').innerHTML ="<fieldset><legend>Gevonden overeenkomsten<font class='fout'> <b>(Corrigeer indien nodig!) </b></font></legend><table>"+terug+"</table></fieldset></td></tr>"; stelin(); }else{ document.getElementById('meerpostcodes').innerHTML="<font color='red'><center><b>ONGELDIGE POSTCODE</b></center></font>"; document.profiel.pcinternnummer.value = ""; } } } } function stelin(){ var res = document.profiel.keuzes.value; if (document.profiel.keuzes.value = 'undefined' ){ for(var i = 0; i < document.profiel.keuzes.length; i++) { if(document.profiel.keuzes[i].checked) { var res = document.profiel.keuzes[i].value; } } } document.profiel.txtPCIntern.value=res; } |
De functie updatepc() wordt uitgevoerd na een onchange op het postcode tekstvak, de functie stelin) wordt opgeroepen vanuit updatepc() om een hidden tekstfield te vullen met het id dat schuilgaat achter de postcode..
en de phpcode die hiermee ook wordt uitgevoerd:
PHP:
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
| <?php include("../db_connect.php"); //Deze file dient voor het controleren van de ingevoerde postcode en toont als het nodig is de gebruiker een popup waarin hij de juiste postcode kan kiezen //(in het geval er meermaals dezelfde pc voorkomt!) if(isset($_SERVER['HTTP_X_USERAGENT']) && $_SERVER['HTTP_X_USERAGENT'] =='controleerpostcode') { $postcode = addslashes($_GET['pc']); $query="SELECT * FROM postcodes WHERE postcode='".$postcode."'"; $resultaat = mysql_query($query) or die(mysq_error()); $terug=""; $aantal =0; while($p = mysql_fetch_array($resultaat)){ $aantal++; if($aantal ==1){ $terug.="<tr><td><input type='radio' name='keuzes' value='".$p['id']."' checked onclick='stelin();'></td><td>".$p['gemeente']."</td></tr>"; }else{ $terug.="<tr><td><input type='radio' name='keuzes' value='".$p['id']."' onclick='stelin();'></td><td>".$p['gemeente']."</td></tr>"; } } echo($terug); } else { include("../404.php"); } ?> |
Nu het probleem:
- In firefox werkt dit perfect, het heeft nog nooit vastgelopen of gedaan wat het niet moet doen...
- in IE6 geeft het soms wel problemen, soms voert hij de php code uit en soms niet, ik heb getest met het doen uitvoeren van een alert(terug) in updatepc, en als ik niet het gewenste resultaat krijg te zien dan krijg ik een lege alert te zien..
Kan iemand me vertellen wat er verkkeerd is waarom dit niet in IE6 werkkt?