Lire un texte
1
2
3
| < html > < head > < script > |
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
| function submitForm() { var xhr; try { xhr = new ActiveXObject( 'Msxml2.XMLHTTP' ); } catch (e) { try { xhr = new ActiveXObject( 'Microsoft.XMLHTTP' ); } catch (e2) { try { xhr = new XMLHttpRequest(); } catch (e3) { xhr = false ; } } } xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status == 200) document.ajax.dyn= "Received:" + xhr.responseText; else document.ajax.dyn= "Error code " + xhr.status; } }; xhr.open( GET ", " data.xml", true ); xhr.send( null ); } |
1
2
3
4
5
6
7
8
9
10
| </ script > </ head > < body > < FORM method = "POST" name = "ajax" action = "" > < INPUT type = "BUTTON" value = "Submit" ONCLICK = "submitForm()" > < INPUT type = "text" name = "dyn" value = "" > </ FORM > </ body > </ html > |
Commentaires sur le code:
new ActiveXObject(Microsoft.XMLHTTP)
Ce constructeur est pour Internet Explorer.
new XMLHttpRequest()
Ce constructeur est pour tout autre navigateur incluant Firefox.
http.onreadystatechange
On associe un traitement (une fonction anonyme en l'occurrence) à cet indicateur d'évènement.
http.readyState == 4
L'état 4 signifie que la réponse est envoyée par le serveur et disponible.
http.status == 200
Ce status signifie ok, sinon un code d'erreur quelconque est envoyé, 404 par exemple.
http.open( "POST", "data.xml", true);
- POST ou GET
-url du fichier.
- true pour asynchrone (false pour synchrone).
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
Cette méthode s'utilise seulement avec POST.
http.send(document.getElementById("TYPEDTEXT").value);
Envoi des données au serveur. Les données sont prises dans le champ dont l'id est "TYPEDTEXT" et qui est rempli par l'utilisateur grâce à un formulaire.
Ce constructeur est pour Internet Explorer.
new XMLHttpRequest()
Ce constructeur est pour tout autre navigateur incluant Firefox.
http.onreadystatechange
On associe un traitement (une fonction anonyme en l'occurrence) à cet indicateur d'évènement.
http.readyState == 4
L'état 4 signifie que la réponse est envoyée par le serveur et disponible.
http.status == 200
Ce status signifie ok, sinon un code d'erreur quelconque est envoyé, 404 par exemple.
http.open( "POST", "data.xml", true);
- POST ou GET
-url du fichier.
- true pour asynchrone (false pour synchrone).
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
Cette méthode s'utilise seulement avec POST.
http.send(document.getElementById("TYPEDTEXT").value);
Envoi des données au serveur. Les données sont prises dans le champ dont l'id est "TYPEDTEXT" et qui est rempli par l'utilisateur grâce à un formulaire.
Lire dans un fichier XML
Pour lire des données dans un fichier XML il suffit de remplacer la ligne:
1
| document.ajax.dyn= "Reçu: " + xhr.responseText; |
par ce code:
1
2
3
4
5
6
| // Assigner le fichier XML à une variable var doc = xhr.responseXML; // Lire le premier élément avec DOM var element = doc.getElementsByTagName( 'root' ).item(0); // Copier le contenu dans le formulaire document.ajax.dyn.value= element.firstChild.data; |
Ecrire dans la page
Le texte récupéré est inscrit dans le corps de la page et non dans un champ de texte. Le code ci-dessous remplace l'objet de formulaire textfield et la seconde partie remplace l'assignement dans la fonction JavaScript.
1
2
3
| <div id= "zone" > <span class= "Style1" >... un texte à remplacer...</span> </div> |
1
| document.getElementById( "zone" ).innerHTML = "Received:" + xhr.responseText; |
Envoyer un texte
Un texte est envoyé au serveur et sera écrit dans un fichier. L'appel de la méthode "open" change, le premier argument est POST, le second est le nom du fichier ou du script qui recevra les données et doit les traiter. Et la méthode "send" aussi a pour argument une valeur qui est une chaîne de paramètres.
1
2
3
| xhr.open( "POST" , "ajax-post-text.php" , true ); xhr.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded" ); xhr.send(data); |
L'argument de send est au format des paramètres de la méthode POST. S'il y a plusieurs données, on les sépare par le symbole "et" commercial:
1
| var data = "file=" + url + "&content=" + content; |
Le paramètre "file" est un fichier qui contiendra le contenu "content". Le nom du fichier doit être vérifié par le serveur pour éviter qu'un autre fichier ne puisse être modifié.
Téléchargement
- Demonstrations et code source.
Les démonstrations de la page dans des fichiers individuels et la démonstration de POST.
On peut les tester localement avec un serveur local comme Wamp.
0 commentaires:
Enregistrer un commentaire