IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajax asynchrone et IE


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut Ajax asynchrone et IE
    Bonjour,
    j'essaie de faire un peu d'AJAX mais j'ai un problème avec IE. Je vous montre le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    function LanceExeAsynchrone(AppFileName)
    {	
    	var xhr = null;
    	if (window.XMLHttpRequest)        
    	{ 
    		xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
    	} 
    	else
    	{
      	if (window.ActiveXObject)                          //  Version Active
       	{
        	xhr = new ActiveXObject("Microsoft.XMLHTTP");   // Internet Explorer 
       	}
      }
     
      if (xhr != null)
      {  	
      	pageName = 'execute.php?app=' + AppFileName;  	
      	xhr.open('GET', pageName, true);
      	xhr.onreadystatechange = function handleResponse() {
    			if(xhr.readyState == 4)
    			{
    				var response = xhr.responseText;
    				if (response != "")
    					alert(response);									
    			}	
    		}
      	xhr.send(null);  
      }
      else
      	alert("AJAX non supporté par le navigateur !");
    }
    et pour le moment, le code de execute.php est seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo rand(1, 1000)."\n";
    LanceExeAsynchrone est appelé quand l'utilsateur click sur un lien dans ma page.
    Le truc c'est que sous FireFox, Opera tout est nikel, je recois bien un random different à chaque appel mais sous IE, ca marche au premier appel et ensuite il me retourne toujours la même chose... d'ailleur même si je change le code de execute.php, il continue de me retourner la même chose (en gros il execute plus la page php mais se contente de me renvoyer le 1er résultat)... je suis un peu paumé là.

    Bruno

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    J'ai trouvé une solution, il suffit de dire qu'on ne veut pas de cache de la page php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    header('Cache-Control: no-cache');
    echo rand(1, 1000)."\n";
    et là ca marche même dans ce fichu IE !

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par Bruno@Home
    Bonjour,
    j'essaie de faire un peu d'AJAX mais j'ai un problème avec IE. Je vous montre le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    function LanceExeAsynchrone(AppFileName)
    {	
    	var xhr = null;
    	if (window.XMLHttpRequest)        
    	{ 
    		xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
    	} 
    	else
    	{
      	if (window.ActiveXObject)                          //  Version Active
       	{
        	xhr = new ActiveXObject("Microsoft.XMLHTTP");   // Internet Explorer 
       	}
      }
     
      if (xhr != null)
      {  	
      	pageName = 'execute.php?app=' + AppFileName;  	
      	xhr.open('GET', pageName, true);
      	xhr.onreadystatechange = function handleResponse() {
    			if(xhr.readyState == 4)
    			{
    				var response = xhr.responseText;
    				if (response != "")
    					alert(response);									
    			}	
    		}
      	xhr.send(null);  
      }
      else
      	alert("AJAX non supporté par le navigateur !");
    }
    et pour le moment, le code de execute.php est seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo rand(1, 1000)."\n";
    LanceExeAsynchrone est appelé quand l'utilsateur click sur un lien dans ma page.
    Le truc c'est que sous FireFox, Opera tout est nikel, je recois bien un random different à chaque appel mais sous IE, ca marche au premier appel et ensuite il me retourne toujours la même chose... d'ailleur même si je change le code de execute.php, il continue de me retourner la même chose (en gros il execute plus la page php mais se contente de me renvoyer le 1er résultat)... je suis un peu paumé là.

    Bruno

    il faut faire gaffe car meme firefox ne parfois reprend le XML depuis son cache, la méthode assez bourrine est de faire simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pageName = 'execute.php?app=' + AppFileName+"&nocache=" + Math.random();
    et là tu forces le retelechargement du fichier appelé.

    note que à la place de "nocache=" tu peux mettre n'importe quoi

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    ha oui, j'avais pas pensé à cette solution.
    Merci.

    Bruno

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] AJAX ASYNCHRONE incompréhensible
    Par doubi_dim dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/03/2008, 11h44
  2. [AJAX] Ajax requêtes asynchrones simultanées
    Par jiber2fr dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/07/2007, 23h39
  3. [AJAX] AJAX Asynchrone ne fonctionne pas
    Par linar009 dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 16/03/2007, 10h11
  4. [AJAX] Ajax pas asynchrone
    Par crazy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/03/2007, 18h45
  5. [AJAX] Annuler une requête asynchrone server side
    Par Matthieu Bissat dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/01/2007, 20h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo