web:js:ajax

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
web:js:ajax [2023/04/02 12:25] – [Exemples] jcheronweb:js:ajax [2023/10/12 11:11] (Version actuelle) – [API Fetch] jcheron
Ligne 63: Ligne 63:
 L'api fetch permet en javascript d'effectuer des requêtes partielles vers le serveur, sans changer de page, selon le mode AJAX (Asynchronous Javascript And XML). L'api fetch permet en javascript d'effectuer des requêtes partielles vers le serveur, sans changer de page, selon le mode AJAX (Asynchronous Javascript And XML).
  
-**feetch** fonctionne selon la syntaxe suivante :+**fetch** fonctionne selon la syntaxe suivante :
 <sxh javascript;gutter:false> <sxh javascript;gutter:false>
 let promise = fetch(url, [options]) let promise = fetch(url, [options])
Ligne 118: Ligne 118:
 </sxh> </sxh>
  
 +
 +Chargement d'image :
 +
 +<sxh javascript>
 +let response = await fetch('/lib/tpl/bootstrap3/images/logo.png');
 +
 +let blob = await response.blob(); // téléchargement en tant qu'objet Blob
 +
 +// Création d img
 +let img = document.createElement('img');
 +img.style = 'position:fixed;top:10px;left:10px;width:100px';
 +document.body.append(img);
 +
 +// Affichage
 +img.src = URL.createObjectURL(blob);
 +
 +setTimeout(() => { // Effacement après 3 secondes
 +  img.remove();
 +  URL.revokeObjectURL(img.src);
 +}, 3000);
 +</sxh>
 +
 +<html>
 +<div class="imageB">
 +<button id="ajax-load-image">Test image loading</button>
 +</div>
 +<script>
 +   document.getElementById("ajax-load-image").addEventListener("click", async function () {
 +      let response = await fetch('/lib/tpl/bootstrap3/images/logo.png');
 +
 +      let blob = await response.blob();
 +
 +      let img = document.createElement('img');
 +      img.style = 'position:fixed;top:100px;left:100px;width:100px';
 +      document.body.append(img);
 +
 +      img.src = URL.createObjectURL(blob);
 +
 +      setTimeout(() => { // le cacher après 3 secondes
 +        img.remove();
 +        URL.revokeObjectURL(img.src);
 +      }, 3000);
 +    });
 +</script>
 +</html>
 +
 +==== Headers ====
 +=== Response ===
 +L'objet **response** renvoyé contient un membre **headers** grace auquel il est possible dé récupérer les en-têtes :
 +
 +<sxh javascript>
 +let response = await fetch('https://api.github.com/repos/cnam-dist/nfa085-2023/commits');
 +
 +// récupération d'un header
 +alert(response.headers.get('Content-Type')); // application/json; charset=utf-8
 +
 +// itération sur tous les headers
 +for (let [key, value] of response.headers) {
 +  alert(`${key} = ${value}`);
 +}
 +</sxh>
 +=== Request ===
 +Les headers de la requête sont envoyées au travers des options du fetch :
 +<sxh javascript>
 +let response = fetch(protectedUrl, {
 +  headers: {
 +    Authentication: 'secret'
 +  }
 +});
 +</sxh>
 +
 +==== POST ====
 +La méthode HTTP utilisée peut également être spécifiée au travers des options, comme les données envoyées dans le body :
 +<sxh javascript>
 +let user = {
 +  name: 'John',
 +  surname: 'DOE'
 +};
 +
 +let response = await fetch('/post/user', {
 +  method: 'POST',
 +  headers: {
 +    'Content-Type': 'application/json;charset=utf-8'
 +  },
 +  body: JSON.stringify(user)
 +});
 +</sxh>
  
  
  
  • web/js/ajax.1680431142.txt.gz
  • Dernière modification : il y a 2 ans
  • de jcheron