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] IE et non avec FF


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 64
    Points
    64
    Par défaut [AJAX] IE et non avec FF
    Bonjour à tous,

    Voilà, j'ai fait une fonction qui permet de mettre à jour deux DIV de ma page index.php.
    Pour cela, je fais appel à deux objets XMLHTTPRequest dans ma fonction.
    MAis le problème, c'est que sous FireFox, mes deux DIV se mettent bien à jour, alors que sous IE, un seul se met à jour.

    Voici ma fonction :

    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
     
    function post_message()
    {
            var xhr = getXhr();
    		var xhr2 = getXhr();
            // On défini ce qu'on va faire quand on aura la réponse
            xhr.onreadystatechange = function(){
              // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
              if(xhr.readyState == 4 && xhr.status == 200){
                document.getElementById("partiedroite").innerHTML = xhr.responseText;
    			document.getElementById("post_mess").style.display="none";
    			document.getElementById("loading").style.display="none";
              }
            }
    		xhr2.onreadystatechange = function(){
              // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
              if(xhr2.readyState == 4 && xhr2.status == 200){
                document.getElementById("partiegauche").innerHTML = xhr2.responseText;
    			document.getElementById("post_mess").style.display="none";	
              }
            }
    		document.getElementById("loading").style.display="block";
            xhr.open("POST","ajout_post.php",true);
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		var titre_post=document.form_post_mess.titre_post.value;
    		var auteur_post=document.form_post_mess.auteur_post.value;
    		var contenu_post=document.form_post_mess.contenu_post.value;
            xhr.send("titre="+titre_post+"&auteur="+auteur_post+"&contenu="+contenu_post);	
     
    		xhr2.open("GET","charger.php",true);
            xhr2.send(null);
    }
    Sous IE, c'est mon DIV "partiegauche" qui ne se met pas à jour.

    Pour infos, dans le fichier "ajout_post.php", j'insère dans ma base MySQL des données d'un formulaire rempli par l'utilisateur et je les affiche dans le DIV partiedroite, et dans le fichier "charger.php", je charge dans partiegauche tout le contenu de ma table avec les nouvelles données que je viens d'insérer.

    Je vous remercie

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Y a t-il un ordre d'exécution ?
    Je sais qu'on ne peut pas faire 2 requêtes XHR simultanées (cf Firebug)

    Sinon essaye de décomposer ta fonction en 2 fonctions de requêtes XHR.
    Les résultats n'étant pas liés, ta fonction post_message() appellera alors post_message1() et post_message2()

    Tiens moi au courant

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 64
    Points
    64
    Par défaut
    Merci pour ta réponse, mais malheureusement, j'ai testé ce que tu m'as conseillé et ça ne fonctionne pas.

    Voilà ce que j'ai fait :

    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
     
    function post_message()
    {
    		post_message1();
    		post_message2();		
    }
     
    function post_message1(){
    	var xhr = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
            xhr.onreadystatechange = function(){
              // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
              if(xhr.readyState == 4 && xhr.status == 200){
                document.getElementById("contenuMessages").innerHTML = xhr.responseText;
              }
            }
    		document.getElementById("loading").style.display="block";
            xhr.open("POST","ajout_post.php",true);
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		var titre_post=document.form_post_mess.titre_post.value;
    		var auteur_post=document.form_post_mess.auteur_post.value;
    		var contenu_post=document.form_post_mess.contenu_post.value;
            xhr.send("titre="+titre_post+"&auteur="+auteur_post+"&contenu="+contenu_post);	
    }
     
    function post_message2(){
    	var xhr2 = getXhr();
     
    		xhr2.onreadystatechange = function(){
              // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
              if(xhr2.readyState == 4 && xhr2.status == 200){
                document.getElementById("sommaireMessages").innerHTML = xhr2.responseText;
    			document.getElementById("post_mess").style.display="none";	
    			document.getElementById("loading").style.display="none";
              }
            }
     
     
    		xhr2.open("GET","charger.php",true);
            xhr2.send(null);	
    }
    Avez-vous d'autres idées ??

Discussions similaires

  1. [AJAX] Envoi ou non d'un formulaire avec une fonction AJAX
    Par ohhh.gringo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/05/2007, 11h47
  2. [AJAX] Listes déroulantes liées avec Ajax
    Par paupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 16h51
  3. [AJAX] Enchainer plusieurs requêtes avec Ajax
    Par Bobtop dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/08/2006, 08h13
  4. [AJAX] Affichage avec Firefox
    Par sarapis dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/05/2006, 16h00
  5. [AJAX] Modifier avec AJAX une image générée avec GD
    Par thsantac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/03/2006, 19h34

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