Warning: session_start() [function.session-start]: open(/mnt/130/sda/4/3/r1zib/sessions/sess_e2f5a4c5640886d842876ececbb40027, O_RDWR) failed: No such file or directory (2) in /mnt/130/sda/4/3/r1zib/ecrire/public.php(182) : eval()'d code on line 3
XMLHttpRequest : autres exemples - R1Zib
R1Zib
Accueil du site > Web 2.0 > JavaScript > XMLHttpRequest : autres exemples

XMLHttpRequest : autres exemples

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 (== 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 )

Information du serveur :

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.

0%

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 messages
Un commentaire ?

utilisation 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 
    $lstUrl 
= array(    'Standblog' => 'http://standblog.org/dotclear/atom.php',
                
'Formats Ouverts' => 'http://formats-ouverts.org/atom.php',
                
'IEBlog' => 'http://blogs.msdn.com/ie/atom.xml');
    
$url $lstUrl[$_GET['feed']];
    
/* file(url) -> tableau  
     * implode () permet de transformer un tableau en string 
     */
    
header('Content-Type: text/xml'); 
    echo 
implode(''file($url)); 
?>

 

Le plus intéressant est l’exploitation du fichier XML. xpath dans DOM

Répondre à cet article


Warning: Unknown(): open(/mnt/130/sda/4/3/r1zib/sessions/sess_e2f5a4c5640886d842876ececbb40027, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/130/sda/4/3/r1zib/sessions) in Unknown on line 0