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] Script marche sur Firefox mais pas sous IE


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut [AJAX] Script marche sur Firefox mais pas sous IE
    Bonjour tout le monde ! Voila il se trouve que j'ai besoin d'utiliser l'ajax dans mon application web mais j'ai un souci: Sur Firefox aucun problème tout se lance parfaitement. Sous IE aucun traitement ne se fait et sous IE j'ai l'erreur suivante :



    Voici 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    function ajax() 
    {
        var xhr_object;
        if(window.XMLHttpRequest) // Firefox et autres
        {
            xhr_object = new XMLHttpRequest();
        } 
        elseif(window.ActiveXObject)  // Internet Explorer
        {
            var ieversions = ['Msxml2.XMLHTTP',
                                   'Microsoft.XMLHTTP',
                                   'Msxml2.XMLHTTP.5.0',
                                   'Msxml2.XMLHTTP.4.0',
                                   'Msxml2.XMLHTTP.3.0'
                                   ];             
             for(var i=0; !xhr_object && i<ieversions.length; i++)     
             {         
                  try        
                  {            
                      xhr_object = new ActiveXObject(ieversions[i]);        
                  }         
                  catch(e)         
                  {             
                      xhr_object = null;  
                  }       
               }     
          }
     
        return xhr_object;
    }
     
     
     
    	function requeteajax(div,fichier,lien){
     
    	  var xhr_object=null;
    	  var data = '?lien='+lien;
    	  xhr_object=ajax();
       	fichier= fichier+data;
    	xhr_object.open("GET", fichier, false); 
    	xhr_object.send(null);
    	 if(xhr_object.readyState == 4){
           document.getElementById(div).innerHTML=xhr_object.responseText;
    	}
    	}
     
    // Un peu plus loin se fait l'appel dans une autre fonction :
     
    for (i = 2; i < 7; i++)
    					{
    						requeteajax(i,'resultat/'+i+'.php',lien);
    					}
    Je ne comprends pas,ca marche sur Opera, sur Firefox, sur Chrome ca met le temps mais ca affiche tout d'un bloc plutôt que petit à petit (mais ca marche^^) mais sur IE rien...

    Voila les lignes de 3 à 6 puisque c'est le 5 qui ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     var xhr_object;
        if(window.XMLHttpRequest) // Firefox et autres
        {
            xhr_object = new XMLHttpRequest();
    ►Ne pas oublier le

  2. #2
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    BOn j'ai trouvé c'était juste elseif à mettre en else if...

    Mais question : Le script s'exécute bien sur IE maintenant sauf qu'il freeze mon navigateur quelqu'un aurait une solution pour ça?
    ►Ne pas oublier le

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par obito Voir le message
    BOn j'ai trouvé c'était juste elseif à mettre en else if...

    Mais question : Le script s'exécute bien sur IE maintenant sauf qu'il freeze mon navigateur quelqu'un aurait une solution pour ça?
    Ben oui,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("GET", fichier, false);
    ta requête est synchrone (argument false) donc le script attend la réponse du serveur pour continuer.
    Passe à true pour avoir le mode asynchrone.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Oui c'est vrai IE ne freeze plus cependant je ne le met pas en résolu car... En fait je fais des affichage par block comme le prouve ce :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i = 2; i < 7; i++)
    					{
    						requeteajax(i,'resultat/'+i+'.php',lien);
    					}
    Sachant que dans la fonction requeteajax c'est ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function requeteajax(div,fichier,lien){
     
    	  var xhr_object=null;
    	  var data = '?lien='+lien;
    	  xhr_object=ajax()
       	fichier= fichier+data;
    	xhr_object.open("GET", fichier, true); 
    	xhr_object.send(null);
    	 if(xhr_object.readyState == 4)  
    	{document.getElementById(div).innerHTML=xhr_object.responseText;
    	}
    	}
    Le problème c'est que sur IE maintenant il ne m'affiche que le premier block, donc c'est comme s'il faisait une seule boucle ou alors qu'il n'arrivait pas de retour sur sur la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requeteajax(div,fichier,lien)
    ►Ne pas oublier le

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Le nombre de requêtes Ajax simultanées peut être limité par le serveur, donc du coup, le surplus n'est pas traité.
    La solution pourrait être de ne lancer la requête suivante que dans le callback de la précédente (et donc de revoir un peu la structure de ta boucle )
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Ha d'accord ok je vais tester ca de suite merci en tout cas.

    Donc en fait l'histoire du callback ca serait :

    SI l'appel de la fonction se fait bien ALORS on fait un autre appel
    ►Ne pas oublier le

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Non, c'est quand la réponse est reçue que tu lances la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(xhr_object.readyState == 4){
        document.getElementById(div).innerHTML=xhr_object.responseText;
        // ici tu lances la requête suivante
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. Script fonctionne sur firefox mais pas IE
    Par johndu81 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2013, 01h29
  2. Réponses: 1
    Dernier message: 23/09/2008, 21h37
  3. Script qui marche sous Firefox mais pas sous IE
    Par GreatDeveloperOnizuka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/01/2008, 12h04
  4. [AJAX] Script qui plante IE mais pas Firefox
    Par Booyakha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 18h40
  5. [XML] Shift-JIS : Marche sous Firefox mais pas sous IE...
    Par Magus (Dave) dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 24/01/2006, 17h19

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