[AJAX] compatibilité ie

mitmit -  
 J -
bonjour !

j'ai un problème avec une fonction ajax utilisant un XMLHttpRequest qui est exécutée périodiquement sur mon site (generationsfm.com) et qui appelle un fichier php qui lit un fichier xml, en extrait les informations et rafraîchit l'affichage de ma page avec ces informations.

tout se passe bien sous firefox mais sous ie (pour changer :/) le rafraichissement n'est jamais fait, même en rafraichissant manuellement la page !! le seul moyen de mettre à jour l'affichage est de fermer le navigateur et de le relancer...

voici le fichier php qui est appelé :
<?
switch ($_GET['act'])
{
	case  "track":
	
	$handle = fopen("http://generationsfm.com/sms/Titres.xml", "r");
	$stack = array();
	if ($handle) 
	{
		while (!feof($handle)) 
	    {
		$buffer = fgets($handle, 4096);
		$buffer=strip_tags($buffer);
		array_push ($stack,$buffer);
		}
	 fclose($handle);
	}
		
	echo $stack[3]."-".$stack[4];
	break;
}
?>


et voici la fonction ajax qui l'appelle :
Configuration: Windows XP
Firefox 2.0.0.3

2 réponses

  1. mitmit
     
    dsl a la suite d'une fausse manip' le message a été coupé :/

    donc la fonction ajax :
    <script language="JavaScript" type="text/javascript">
    
    function getXhr() {
    	var xhr = null;
        
    	//firefox
        if (window.XMLHttpRequest) { 
    		xhr = new XMLHttpRequest();
        }
    	
    	//ie
        else if (window.ActiveXObject) {
    		try {
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch (e) { 
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	
    	//non supporté
    	else {  
    		alert("Fonction non supportée par le navigateur"); 
    		xhr = false; 
    	}
    	
    	return (xhr);
    }
    
    function getTrack()
    {
        var xhr = getXhr();
    	
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { 
    								
    								if (xhr.readyState == 4 && xhr.status == 200) {
    									var resultat = xhr.responseText;
    									document.getElementById('div_track').innerHTML=resultat;
    								}
    								
    							 };
    							 
    	//on appelle le fichier reponse.txt
        xhr.open("GET","http://generationsfm.com/ajax_track.php?act=track",true);
    	xhr.send(null);
    	setTimeout("getTrack()", 5000);
    }
    
    window.onload=getTrack;
    </script>


    voilà je ne sais vraiment pas pourquoi ie fait des siennes si quelqu'un a une idée ça m'arrangerait bien ^^

    merci par avance
    mitmit
    0
  2. J
     
    window.onload=getTrack()

    signifie: la fonction s'execute au moment de chaque chargement de la fenetre

    Enleves le "window.onload=" et avec seulement getTrack() ca marche aussi
    0