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] Remplissage de 2 DIV


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Points : 27
    Points
    27
    Par défaut [AJAX] Remplissage de 2 DIV
    Bonsoir,

    J'essaye de remplir 2 DIV dans une page via AJAX mais après execution du code seul la dernière, dans l'ordre d'appel, est remplis.
    Petit exemple:
    mes 2 DIV:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="div_mysql" style="width:400px;height:100px;overflow:auto"></div>
    <div id="div_utilisateur" style="width:800px;height:400px;overflow:auto"></div>
    mon code JS appelant les fonctions AJAX (ressemblant étrangement au tuto )
    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
    function ajx_mysql() {
    	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('div_mysql').innerHTML = xhr.responseText;
    		}
    	}
    	url_ajax = "ajax.php?step=1";
    	xhr.open("GET",url_ajax,true);
    	xhr.send(null);
    }
    function ajx_utilisateur(){
    	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('div_utilisateur').innerHTML = hr.responseText;
    		}
    	}
    	url_ajax = "ajax.php?step=1";
    	xhr.open("GET",url_ajax,true);
    	xhr.send(null);
    }
    function onchange_connect() {
    	ajx_mysql();
    	ajx_utilisateur();
    }
    Ici seul la div_utilisateur (appelé par ajx_utilisateur) est remplis.
    Si j'intervertis les 2 appel ajx... alors c'est la div_mysql qui est remplis.

    Donc comment faire pour avoir mes 2 DIV remplis?

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Il existe la solution d'une seule fonction qui récupère un xml, ca peut etre interessant, non ?

    Sinon il y aurait pas une erreur dans ton code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function ajx_utilisateur(){
    	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('div_utilisateur').innerHTML = hr.responseText;
    		}
    	}
    	url_ajax = "ajax.php?step=1";
    	xhr.open("GET",url_ajax,true);
    	xhr.send(null);
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Le code est bon (j'ai bien xhr. xhez moi) c'est en collant que j'ai du rater mon coup

    C'est quoi cette histoire de récupérer une réponse en xml? Ca marche comment, si t'as un lien vers un tuto (je débute en AJAX).
    Mais il faut aussi que je puisse remplir mes 2 DIV indépendamment l'une de l'autre (changé le contenu de l'une sans changer l'autre).

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    pff...
    Combien de fois je devrai encore dire que ce tuto est mal fait ???
    On peut vraiment pas s'arrganger pour le changer ???

    Correction :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    // Mes fonctions JS pour obtenir un objet XmlHttpRequest
    pickRecentProgID = function (idList){
    	// found progID flag
        var bFound = false;
        for(var i=0; i < idList.length && !bFound; i++){
            try{
                var oDoc = new ActiveXObject(idList[i]);
                o2Store = idList[i];
                bFound = true;
            }catch (objException){
                // trap; try next progID
            };
        };
        if (!bFound)
            throw "Could not retreive a valid progID of Class";
        idList = null;
        return o2Store;
    }
    
    GetXmlHttpRequest_AXO=null
    GetXmlHttpRequest=function () {
    	if (window.XMLHttpRequest) {
    		return new XMLHttpRequest()
    	}
    	else if (window.ActiveXObject) {
    		if (!GetXmlHttpRequest_AXO) {
    			GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
    		}
    		return new ActiveXObject(GetXmlHttpRequest_AXO)
    	}
    	return false;
    }
    
    /// Pour rester compatible avec le tuto
    getXhr=GetXmlHttpRequest;
    
    function ajx_mysql() {
    	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('div_mysql').innerHTML = xhr.responseText;
    		}
    	}
    	url_ajax = "ajax.php?step=1";
    	xhr.open("GET",url_ajax,true);
    	xhr.send(null);
    }
    function ajx_utilisateur(){
    	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('div_utilisateur').innerHTML = hr.responseText;
    		}
    	}
    	url_ajax = "ajax.php?step=1";
    	xhr.open("GET",url_ajax,true);
    	xhr.send(null);
    }
    function onchange_connect() {
    	ajx_mysql();
    	ajx_utilisateur();
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    FremyCompany : ca marche

    Avant de 'résoudre' le post, peux-tu m'expliquer les avantages de ton script, en comparaison de celui du tuto. J'voudrais juste comprendre.

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Script du tuto :
    Le script fonctionne bien dans les conditions suivantes :
    - Une reqête ou requêtes très espacées dans le temps
    - 2 types d'ActiveX pris en charge (les plus courrants)

    Mon script :
    Mon script fonctionne bien dans toutes les conditions :
    - Autant de requêtes que l'on veut sans espacement dans le temps obligatoire
    - Un grand nombre d'ActiveX pris en charge

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

Discussions similaires

  1. [AJAX] - Rafraichissement d'un DIV avec setTimeOut
    Par Seb06 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/03/2011, 00h07
  2. Remplissage d'un div suite à une requête AJAX
    Par totojordi dans le forum Zend Framework
    Réponses: 4
    Dernier message: 19/04/2010, 16h38
  3. [AJAX] rafraichissement d'un Div en Ajax
    Par Azanael dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/05/2006, 15h06
  4. Firefox et remplissage d'une div
    Par barok dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/03/2006, 10h08
  5. [AJAX] texte réponse Ajax dans un conteneur div
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/02/2006, 18h07

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