Maintenant que l’on a vu le principe, on voit que la difficulté va être sur le format et la façon de transmettre les données. _A travers différentes exemples, nous allons voir différents cas :
- texte simple ( sauvegarde automatique et Barre de progression
- HTML (un tchat )
- XML (lecture d’un flux atom)
- JSon
- Javascript
la sauvegarde automatique
On va mémoriser le contenu d’une zone de texte automatiquement pour que la zone soit pré-renseigner après avoir actualiser la page.
On peut mémoriser cette information directement dans un cookie sur le PC. Ce n’est pas une bonne pratique car les données dans les cookies sont en clair et ils ont une taille limité.
Il est préférable de stoker les informations sur le serveur.
Sur le PC, on va avoir un cookie indiquant le numéro de session et permettra de retrouver nos informations sur le serveur.
voici le code de cette page :
< ?php session_start() ; ?> <html ......> <head> ...... </head> <body> ..... <input type="text" id="edtName" value="< ?php echo $_SESSION[’edtName’] ; ?>" /> ......Cet article est écrit avec l’outil SPIP, on ne peut pas facilement insérer du code PHP directement dans le code. Pour contourner le problème, l’initialisation va être faite en Javascritpt.
code JavaScript
.... function syncName(e) { var requester = getRequester(); requester.onreadystatechange = function() { if (4 == requester.readyState&& 200 != requester.status) // Affichage s'il y a eu un problème }; var qs = $H({ 'name': $F('edtName')}).toQueryString(); requester.open("GET", "php/save_name.php?" + qs, true); requester.send(null); } // syncName
Coté serveur php/save_name.php
<?php
session_start();
/* simulation d'un cas d'erreur 1 fois sur 4 */
if (0 == rand(0,4)) {
echo '501 Could not be saved.';
return;
}
echo '200 Saved.';
$_SESSION['edtName'] = $_GET['name'];
?>
il faut saisir dans cette zone puis cliquer en dehors de la zone. Une requête va être envoyé et on va visualiser le résultat (200 -> la sauvegarde s’est bien passé 500 -> on simule un problème )
TAF : Comment faire pour arrêter l’éffacement de la requete si l’on a relancé une sauvegarde ?
Barre de progression
Suivez le déroulement du processus côté serveur avec la barre ci-dessous.
un tchat
On va simuler un tchat avec rafraichissement à chaque nouveau messsage. C’est le serveur qui va générer le XHTML qui va être insérer dans la page.code JavaScript
Les messagesutilisation du XML
Parfois quand les données sont complexes, il est nécessaire d’utiliser le format XML pour transférer des données.on peut lire nativement un fichier XML avec javascript sur firefox, cela ne marche pas avec MSIE. Il faut utiliser des bibliothèques comme GoogleAJAXXSLT.
Code JavaScript requester.onreadystatechange = function() { if (4 == requester.readyState && 200 == requester.status) { var data = requester.responseXML; var articleCount = data.evaluate( 'count(//*[name()="entry"])', data, null, XPathResult.NUMBER_TYPE, null).numberValue; Element.removeClassName(status, 'working'); Form.enable(form); status.firstChild.nodeValue = articleCount + ' article(s).'; } }; | Code PHP
<?php
|
Le plus intéressant est l’exploitation du fichier XML. xpath dans DOM