PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 15-12-2009 11:00:43

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Rechargement simple d'un DIV avec AJAX

Bonjour,

Voici la script que j'utilise pour recharger un DIV :

var Racine = '';
function RecupererContenu(Url){
  // On démarre
    if(window.XMLHttpRequest){
    // Pour tous les navigateurs
        Req = new XMLHttpRequest();
    }
    else{
    if(window.ActiveXObject){
      // Pour IE
          Req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
  // On récupere tout le fichier
    Req.open("GET", Racine+Url, false);
    Req.send(null);
  // On le traite
  if(Req.readyState == 4 && Req.status == 200) {
    return Req.responseText;
  }
  else{
    return "Erreur...";
  }
   
}
function ActualiserDiv(DivId, Url){
  document.getElementById(DivId).innerHTML = "Chargement...";
  document.getElementById(DivId).innerHTML = RecupererContenu(Url);
}
function SetRacine(NewRacine){
  Racine = NewRacine;
}

Ce code me pose un problème sous Internet Explorer : il faut que je recharche manuellement les pages que je veux "inclure" une fois avant qu'IE comprennent qu'il faut les changer...

Je ne sais pas si mon explication est clair, mais vous devez bien pouvoir trouver quelque chose à redire à mon code !

Merci tongue

Hors ligne

#2 15-12-2009 12:23:43

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Rechargement simple d'un DIV avec AJAX

Je viens de trouver une solution qui consiste à ajouter en entête de toutes ses pages :

[code php]

<?php

header("Cache-Control: no-cache");


?>

[/code]

Qu'est ce que cela implique ?

Hors ligne

#3 15-12-2009 18:46:14

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Rechargement simple d'un DIV avec AJAX

Cela implique que le navigateur ne va pas charger dans les fichiers cache (temporaires) ton site.
En gros il retélécharge tout à chaque affichage de la page.

Hors ligne

#4 15-12-2009 18:54:45

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Rechargement simple d'un DIV avec AJAX

Y a-t-il une autre solution ? une meilleure solution...

Hors ligne

#5 15-12-2009 20:21:45

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Rechargement simple d'un DIV avec AJAX

Il me semble qu'il est possible de dire au navigateur de retélécharger la page si son cache date d'un certain temps.
Une réponse avait été donnée avec comme date la première date informatique (en gros le code revenait à ton code actuel vu que tu recharges tout le temps).
Par contre je n'ai pas le temps ce soir de retrouver la solution qui avait été postée sur ce forum. A toi de voir si tu la retrouves avant moi. ^^

Hors ligne

#6 17-12-2009 01:35:59

Scade
Ancien nouveau
Inscription : 03-06-2009
Messages : 6
Site Web

Re : Rechargement simple d'un DIV avec AJAX

Bien l'bonsoir.

Jamais eu c'problème, c'est étrange...
J'ai regardé comment j'appelais mes scripts pour voir où il pouvait y avoir des différences, je te les signales, à tout hasard:

Déjà, voila pour l'objet.

//Firefox, Mozille, etc..
if( window.XMLHttpRequest )
  { jakob = new XMLHttpRequest(); }
//Internet Explorer
else if ( window.ActiveXObject )
  {
    try
    { jakob = new ActiveXObject('Msxml2.XMLHTTP'); }
    catch (e)
    { jakob = new ActiveXObject('Microsoft.XMLHTTP'); }
  }

 

Ensuite, pour le traitement après exécution du script (jakob contient la référence vers l'objet activeX, c'est ton Req):

//Code qui s'exécutera une fois la requete terminée
jakob.onreadystatechange = function ()
{
  //Vérification du statut de la requete et de la réponse serveur
  if ( (jakob.readyState == 4) && (jakob.status == 200) )
  {
    //Action
  }
}
 

Enfin, je n'envoie pas en GET mais en POST, comme suite:


//Ouverture en POST du fichier qui va exécuter la requete et renvoyer les résultats
jakob.open('POST','scripts/fichier.php',true);

jakob.setRequestHeader('Content-Type','application/x-www-form-urlencoded');    // ne pas oublier de poster les arguments

//Paramètres d'entrée
jakob.send(params);
 

En espérant que changer un de ces trois trucs dans ton code résoudra ton souci wink

Hors ligne

#7 17-12-2009 17:03:15

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Rechargement simple d'un DIV avec AJAX

Merci je vais tester ça !

Hors ligne

Pied de page des forums