JDN Développeurs > Client Web > Un coup d'Ajax sur votre application Web

Un coup d'Ajax sur votre application Web > 3. Modifier un texte

Précédente Autocomplétion 
<style>
#login:hover {
  background: yellow;
  }
#spanLogin {
  display:none;
  }
</style>

Login: <span id="login" onclick="formLogin();"">MonLogin</span>
<span id="spanLogin"><input type="text" name="login" id="formLogin" onblur="changeLogin();" /><input type="submit" value="Valider" onclick="changeLogin();"/></span><br />
<span id="message"></span>


function formLogin() {
  document.getElementById('login').style.display = "none";
  document.getElementById('spanLogin').style.display = "inline";
  document.getElementById('formLogin').value = document.getElementById('login').innerHTML;
  document.getElementById('message').innerHTML = "";
  }

function changeLogin() {
  document.getElementById('login').style.display = "inline";
  document.getElementById('spanLogin').style.display = "none";
  document.getElementById('message').innerHTML = "Sauvegarde en cours.";
  document.getElementById('message').style.color = "red";
  validLogin();
  }


<?php
// Nous partons du principe que le code SQL est complet et bon.
echo true.",".$_GET['login'];
?>

function handleHttpResponse() {
  if (http.readyState == 4) {
    results = http.responseText.split(",");
    res = results[0];
   newLogin = results[1];
    if (res == true) {
      document.getElementById('login').innerHTML = newLogin;
      document.getElementById('message').innerHTML = "Login '"+newLogin+"' correctement enregistré.";
      document.getElementById('message').style.color = "green";
      }
    if (res == false) {
      document.getElementById('message').innerHTML = "Problème d'enregistrement du login '"+newLogin+"'.";
      document.getElementById('message').style.color = "red";
      }
    }
  }
Avantage d'une bonne gestion du DOM : être capable de modifier à l'envi certaines sections de sa page, sans devoir à chaque fois recharger celle-ci.

Nous reprenons ici l'exemple du login, cette fois en donnant la possibilité de cliquer le texte affiché. Ce clic provoque un remplacement du texte par un champ contenant ce texte et un bouton de validation.

Si le bouton est cliqué, une requête HTTPRequest est lancée, et un code de retour est envoyé. Nous partirons ici du principe que le code SQL fonctionne à chaque fois, pour nous concentrer sur les modifications appliquées au DOM, qui réalise le plus gros du travail visuel.

Notre code HTML est déjà étendu, pour contenir le formulaire de modification, caché grâce à CSS.


Le code Javascript dispose en conséquence de fonctions pour cacher et afficher ces éléments span : formLogin() et changeLogin(). Le second se charge par ailleurs de lancer la requête HTTPRequest.


Notre code PHP, ici, ne sera qu'une coquille renvoyant l'acceptation du serveur, et le login modifié. Bien sûr, en production, ce fichier contiendra toutes les requêtes SQL nécessaires, ainsi que des tests, afin de renvoyer "false" plutôt que "true" au client. La réponse de HTTPRequest étant une chaîne, nous concaténant "true" et le nouveau login avec une virgule.


Enfin, la fonction JavaScript handleHttpResponse() se charge de récupérer les informations et de les utiliser à bon escient. Elle sépare les deux valeurs renvoyée par PHP dans un tableau results[], et exploite ce dernier pour afficher le résultat.
Précédente Retour au sommaire Suivante 
1 | 2 | 3 | 4 | 5
 
|
Haut de page
Nos autres sites Société | Mentions légales | Contacts | Publicité | PA Emploi | Presse | Recrutement | Tous nos sites | Données personnelles
© Benchmark Group, 69/71 avenue Pierre Grenier. 92517 Boulogne Billancourt Cedex