Anthony HERVÉ

Ingénieur édudes et développement

IE cache bien son jeu

12/12/2016
Image actualité

Après quelques heures passées sur un problème, je viens ici vous donner la solution qui peut servir à pas mal de monde.

Problème

Vous avez une page affichée avec un appel Ajax (par exemple un formulaire). Vous soumettez le formulaire, mais lorsque vous le réafficher, vous avez l'impression que les nouvelles valeurs ne sont pas prises en compte.

Vous rencontrez ce problème uniquement sur Internet Explorer.

Cause

Notre ami Internet Explorer cache toutes les requêtes Ajax faites en GET. Ce qui fait que lorsque vous affichez votre formulaire pour la seconde fois, la requête Ajax n'est même pas lancée et c'est le cache du navigateur qui l'affiche.

Solutions

Plusieurs solutions s'offrent à vous :

  • Changer la méthode de votre appel Ajax et la mettre en POST ;
  • Ajouter des headers à votre réponse : header("Cache-Control", "no-cache,no-store") ;
  • Si vous utilisez Ajax, vous pouvez ajouter l'option cache et la mettre à false.

 

// Pour toutes les requêtes
$.ajaxSetup({ cache: false });

// Pour une requête en particulier
$.ajax({
    cache: false,
    //other options... 
});

 

Et voilà, votre problème est maintenant résolu !

ie

Commentaires