Bonjour,
J'essaie de faire qqs tests en Ajax, et je cale sur un truc bete, mais je commence a m'arracher les cheveux...
Pouvez-vous m'aider?
C'est un script provenant de http://www.xml.com/pub/a/2005/02/09/...p-request.html que j'essaie d'adapter mais je garde une erreur sur mon getElementById (no properties), alors que j'ai mis une alert juste en dessous avec le meme getElementById et qui fonctionne...
2 fichiers; le probleme se situe dans la fonction checkName...
ajax.php
ajax2.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Ajax</title> <script type="text/javascript"> var req; function loadXMLDoc(url) { // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); // branch for IE/Windows ActiveX version } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } function checkName(input, response, id) { if (response != ''){ // Response mode message = document.getElementById('nameCheckFailed'); if (response == '1'){ message.className = 'error'; document.getElementById(id).value = ''; document.getElementById(id).focus(); } else { message.className = 'hidden'; } } else { // Input mode url = 'ajax2.php?q=' + input; loadXMLDoc(url); } alert(document.getElementById(id).value); } function processReqChange() { // only if req shows "complete" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here... response = req.responseXML.documentElement; method = response.getElementsByTagName('method')[0].firstChild.data; result = response.getElementsByTagName('result')[0].firstChild.data; eval(method + '(\'\', result)'); } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } } </script> <style type="text/css"> <!-- span.hidden{ display: none; } span.error{ display: inline; color: black; background-color: pink; } --> </style> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> <input id="username" name="username" type="text" onblur="checkName(this.value,'','username')" /> <span class="hidden" id="nameCheckFailed"> This name is in use, please try another. </span><br /> <br /> <input id="test" name="test" type="text" /> </form> </body> </html>
Merci de votre aide!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php header('Content-Type: text/xml'); function nameInUse($q) { if (isset($q)){ switch(strtolower($q)) { case 'drew' : return '1'; break; case 'fred' : return '1'; break; default: return '0'; } } else{ return '0'; } } ?> <?php echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; ?> <response> <method>checkName</method> <result><?php echo nameInUse($_GET['q']) ?></result> </response>
Partager