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 :

Pb de Compatibilité Affichage Dynamique FF VS. ie


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Pb de Compatibilité Affichage Dynamique FF VS. ie
    Bonjour @tous.

    Je souhaite mettre à jour dynamiquement et sans rechargement de page un bloc dans ma page lors d'un clique sur un bouton. Je vous poste mon code qui fonctionne très bien sous firefox, mais absolument pas sous ie qui m'annonce qu'il y a des erreurs inconnues....

    page.php :
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
     
    <!-- Bloc mis à jour -->
    <div id="contain">
     
       <p id="bloc"><?php echo $bio;?></p>
     
    </div>
     
    <div class="dl">
    <a id="presse" onclick="javascript:go();" style="cursor:pointer;">Extraits de presse</a> | (t&eacute;l&eacute;charger)
    </div>
     
    <!-- Formulaire qui envoi un id récupéré dans AJAX.ext_press.php -->
    <form>
      <input type="hidden" id="id_art" value="<?php echo $_GET['id_art'];?>" />
    </form>
     
    <!-- Script d'envoi d'une variable en POST à AJAX.ext_press.php-->
    <script language="javascript" type="text/javascript">
     
    // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
     
    var pickRecentProgID = function (idList){
     
    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){
     
    };
     
     };
     
    if (!bFound)
       throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
    idList = null;
     
     return o2Store;
    }
     
    // Retourne un nouvel objet XmlHttpRequest
    var GetXmlHttpRequest_AXO=null;
    var 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;
    }
     
     
    getXhr=GetXmlHttpRequest;
     
    	/**
    	* Méthode qui sera appelée sur le click du bouton
    	*/			
     
    function go(){
    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){
    					leselect = xhr.responseText;
     
    					window.document.getElementById('bloc').innerHTML = leselect;
    			   }
    			  }
    			  			  xhr.open("POST","./AJAX_ext_presse.php",true);
     
    			  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    			  			  // ici, l'id de l'artiste selectionné
    			  id_art = window.document.getElementById('id_art');
    			  Id_art = id_art.value;
     
    			  xhr.send("id_art="+Id_art);
    			}	
     
     
     
    		presse = window.document.getElementById('presse');		
    		presse.onclick = function() { go(); };
     
     
     
    </script>
    AJAX.ext_press.php :

    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
     
    <?php
     
    if(isset($_POST["id_art"])){
    if (mysql_connect("localhost","login","mdp") ) {
    if (mysql_select_db("mabase") ) {
                                    
    $requete = "SELECT ex.description FROM extrait_presse AS ex, artiste AS a, art_extrait AS aex WHERE a.id_art=aex.id_art AND aex.id_extrait = ex.id_extrait AND aex.id_art =".$_POST["id_art"]." LIMIT 1";
    //echo $requete;
    if ($res = mysql_query($requete) ) {
                                    
                                            $nb= mysql_num_rows($res);
                                            
    if($nb > 0){
                                                    
                                                    echo '<h2 style="color: #535947;
            font-size:14px;">Extrait de presse</h2><br />';
                                                    
                                                    while($row = mysql_fetch_array($res)){
                                                            $description = utf8_encode($row['description']);
                                                            echo $description;
                                                    }
                                                                            
    }else{
                                                    echo "<div style='font-family:Verdana, Arial, Helvetica, sans-serif;font-size:10px;color:#C60D0A;font-weight:bold;'>Aucun extrait de presse pour cet artiste</div>";
    }               
                                            
    } else {
                                            echo "Erreur de requ&ecirc;te";
    }
                                    
                                    
                                    
                            
                                    
    } else {
            echo "Erreur sélection de base de données";
    }
    } else {
            echo "Erreur de connexion mysql";
    } 
     
    } else {
            echo "Type d'artiste non défini";
    }
     
     
     
    ?>

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Bon, j'ai fait évoluer mon problème, j'ai retiré l'évènement "Onclik='javascript:go()'" de ma balise <a id="presse" style="cursor:pointer;">.

    L'évènement est donc géré par le code suivant (qui était déjà présent auparavant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Presse = window.document.getElementById('presse');	
    Presse.onclick = function() { go(); };
    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    presse = window.document.getElementById('presse');
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Presse = window.document.getElementById('presse');
    car IE transforme tous les ID en variable Javascript Pointant vers l'objet HTML désigné... c'est une source de conflit assez fréquant avec IE...

    Mais le code plante ailleurs, à cet endroit d'après ie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.document.getElementById('bloc').innerHTML = leselect;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Pas de réponse ?

  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 : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Et est-ce que ca marche coté PHP ?
    Si oui, le problème est dans le code JS : "bloc" est il un ID valide ? N'y a-t-il pas de faute de syntaxe ou de frappe dans le code ?
    Si non, pk ?
    1/ Donnés manquantes ou incorrectes
    Les données envoyés par JS sont elles bien encodées (escape)
    Les donnése PHP sont elles exactes ?
    2/ Traitement des données
    Plus rien a voir avec JS
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

Discussions similaires

  1. Problème d'affichage dynamique d'une liste
    Par bor1s dans le forum ASP
    Réponses: 2
    Dernier message: 18/11/2005, 16h18
  2. Probleme d'affichage dynamique de ma base
    Par kudawoo2002 dans le forum ASP
    Réponses: 3
    Dernier message: 18/11/2005, 09h22
  3. Réponses: 1
    Dernier message: 08/07/2005, 02h46
  4. [VB.NET] - affichage dynamique dans un tableau
    Par karibouxe dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/06/2005, 15h07
  5. affichage dynamique en fonction des données en base
    Par jengo dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/10/2004, 10h22

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