[AJAX] - MAJ XML [RESOLU] - prob de rafraichisement

Bonjour a tous, voila j’ai un script qui charge un xml et un boutan affiche par exemple le champ titre. Ensuite je lance un fichier php qui met a jour le xml.

Je voudrai que lorsque je reappui sur le bouton, cela affiche la modification. j’ai essayé de relancé le script qui charge le xml, mais rien. Pourtant le xml est bien modifié.

Je doit alors fermé et reouvrir firefox. et la, magi, mon champ affiche la modification…

Que doit-je foire pour que le refresh se fasse automatiquement?
mes script:
index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html?gt;
<head>
	<title>Untitled</title>
	<script language="JavaScript" type="text/javascript" src="xml.js"></script>
</head>

<body onload="lanceXML('commandesXML.xml')">
<FORM ACTION="GET" NAME="f1" onSubmit="return false">
  <P>Recharger le XML :
        <INPUT TYPE=BUTTON NAME="b5" VALUE="Charger"
          onClick="lanceXML('commandesXML.xml');">

     
      <P>Valeur du premier noeud de nom "titre" :
        <INPUT TYPE=BUTTON NAME="b5" VALUE="Afficher"
          onClick="alert(obtenirValeurNoeud(obtenirNoeud('titre')));">

               
      <P>Compter le nombre de noeuds de nom "articles" :
        <INPUT TYPE=BUTTON NAME="b8" VALUE="Compter"
          onClick="alert(compterNoeuds('articles'));">
                
      </FORM>
	<a href="" onclick="lancePHP('ouvrir.php')">Lance le php</a>
</body>
</html?gt;

xml.js

// --- Variables globales ---

// chargement du fichier XML
var xml_charge=false;
var xml_doc;
var php_doc;

// --- Fonctions ---

// Charge le xml
function lanceXML(url) {
	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, [Safari](http://www.clubic.com/telecharger-fiche38283-safari.html),...
  http_request = new XMLHttpRequest();
    	if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
        //   Voir la note ci-dessous à propos de cette ligne
    	}
	}else if (window.ActiveXObject) { // IE
    	try {
        	http_request = new ActiveXObject("Msxml2.XMLHTTP");
    	}catch (e){
        	try {
            	http_request = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch (e) {}
    	}
	}
 
  if (!http_request) {
    	alert('Abandon :( Impossible de créer une instance XMLHTTP');
    	return false;
  }
	http_request.onreadystatechange = function() { alertContents(http_request); };
	http_request.open('GET', url, true);
	http_request.send(null);
}

function lancePHP(url) {
	var http_request1 = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
  http_request1 = new XMLHttpRequest();
    	if (http_request1.overrideMimeType) {
      http_request1.overrideMimeType('text/xml');
        //   Voir la note ci-dessous à propos de cette ligne
    	}
	}else if (window.ActiveXObject) { // IE
    	try {
        	http_request1 = new ActiveXObject("Msxml2.XMLHTTP");
    	}catch (e){
        	try {
            	http_request1 = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch (e) {}
    	}
	}
 
  if (!http_request1) {
    	alert('Abandon :( Impossible de créer une instance XMLHTTP');
    	return false;
  }
	http_request1.onreadystatechange = function() { alertContentsPHP(http_request1); };
	http_request1.open('GET', url, true);
	http_request1.send(null);
}

// Attend la reponse serveur pour fourni le xmlDoc
function alertContents(http_request) {
	if (http_request.readyState == 4) {
    	if (http_request.status == 200) {
        xml_doc = http_request.responseXML; 
        xml_charge = true;
    	} else {
        alert('Un problème est survenu avec la requête.');
    	}
	}
}

// Attend la reponse serveur pour fourni le xmlDoc
function alertContentsPHP(http_request1) {
	if (http_request1.readyState == 4) {
    	if (http_request1.status == 200) {
        alert('ATTENTION, JE MET A JOUR'); 
    	} else {
        alert('Un problème est survenu avec la requête.');
    	}
	}
}
// retourne le premier noeud XML de nom et de valeur specifies
function obtenirNoeud(nomNoeud, valeurNoeud) {
  if (!xml_charge) return;
  if ((!nomNoeud) || (nomNoeud=="")) return;
  var elts=xml_doc.getElementsByTagName(nomNoeud);
  if (elts.length<1) return;
  for (var i=0; i<elts.length; i++) {
    if (parseInt(elts[i].nodeType)==1) {
      if ((!valeurNoeud) || (obtenirValeurNoeud(elts[i])==valeurNoeud))
        return (elts[i]);
    }
  }
  return;
} // fin obtenirNoeud(nomNoeud, valeurNoeud)

// retourne la valeur du noeud XML passe en parametre
function obtenirValeurNoeud(noeud) {
  if (!xml_charge) return "";
  if ((!noeud) || (!noeud.firstChild)) return "";
  if (noeud.firstChild.nodeValue) return (xml_suppEsp(noeud.firstChild.nodeValue));
  if (noeud.firstChild.data) return (xml_suppEsp(noeud.firstChild.data));
  return "";
} // fin obtenirValeurNoeud(noeud)

En fait, si je vide le cache, ca fonctionne, mais pour l’instant, je le fait a la main.

Y’a des script qui le font? php? javascript? html?

merci

Je ne sais pas si c’est la solution la plus élégante, mais il me semble que pour éviter les problèmes de mise en cache, il est possible de rajouter une variable dans l’url.

Genre si tu fais ta requête AJAX vers http://monsite/monfichier.xml[/url], modifie ton Javascript pour rajouter un nombre aléatoire (ou un timestamp) à l’url. Ce qui donnerait, par exemple : [url=http://monsite/monfichier.xml?46546546]http://monsite/monfichier.xml?46546546
En principe, si le nombre est différent à chaque fois, ça suffit pour que le navigateur n’aille pas chercher sa version du fichier dans le cache.

et bien merci, ta methode fonctionne… c’est en effet peu etre pas la meilleur solution, mais elle fonctionne… thank !