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 :

innerHTML et firefox


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut innerHTML et firefox
    Bonjour à tous,

    J'ai un souci avec une validation de formulaire.

    J'ai des select que je genere de maniere dynamique via xhr dans des span et lorsque je valide le formulaire, je ne trouve pas mes $_POST correspondants sous firefox ( ie 7 fonctionne )

    Voici le code :

    la page formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <span id="div_domicilie" style="display:block;">
    <select name="loca_mach" id="loca_mach" onchange="selectSalle(this.value)">
    <option value=""> -- Choix --  </option>
    <option value="E">Client Siége</option>
    </select>	
    </span>
    la fonction js qui appelle xhr

    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 selectSalle(loca) {
     
    	if(loca == 'N' || loca == 'C') {
    		document.getElementById('sall_mach').disabled = false;
    		document.getElementById('baie_mach').disabled = false;
     
        /* Liste des salles en fonction du domicilié  */
     
    	var xhr = getXhr();
        xhr.onreadystatechange = function()
            {
                if(xhr.readyState == 4 && xhr.status == 200)
                    {
    				// document.getElementById("div_salle").removeChild();
    // longueurCible = document.getElementById("div_salle").firstChild.length;	//document.getElementById("div_salle")..firstChild.appendChild(xhr.responseText);
    document.getElementById('div_salle').innerHTML = xhr.responseText;
    alert(document.getElementById('div_salle').innerHTML);
                    }
     
            }
        xhr.open("GET",'page/EQUIPEMENTS/getlisteofsalle.php?lieu_sain='+loca, true);
        xhr.send(null);
     
    }else {
    	document.getElementById('sall_mach').disabled = true;
    	document.getElementById('baie_mach').disabled = true;
    }
     
    }
    la page pour générer dynamiquement le select

    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
    <?php
    session_start;
    require_once '../../inc/inc.conf.php';
    $cnx = mysql_connect($BDD['host'],$BDD['user'],$BDD['pass']);
    $str = '';
    $str .= '<select name="sall_mach" id="sall_mach" onchange="js_update(this);">';
    $str .= '<option value="">-- Choix --</option>';
                $query = "SELECT id_sain, libe_sain FROM ".$BDD['qoso'].".salles_informatiques WHERE lieu_sain = '".$_GET['lieu_sain']."'" ;
     
                $sql = mysql_query($query);
                while ( $res = mysql_fetch_object($sql))
                    {
                        $str.='<option value="'.$res->id_sain.'" >';
                        $str.= $res->libe_sain.'</option>';
                    }
    $str .= '</select>';
    echo $str;
    ?>
    le span du select dynamique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <span id="div_salle">
    <select name="sall_mach" id="sall_mach" onchange="js_update(this);">
    <option value="">-- Choix --</option>
    </select>
    </span>
    Quand je valide sous ie, ça fonctionne bien, je récupére bien mes $_POST mais pas sous FF !!??

    Quelqu'un a une idée ?

    Merci par avance

    sly

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par syl2095 Voir le message
    ... je ne trouve pas mes $_POST correspondants ...

    Voici le code :

    la fonction js qui appelle xhr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function selectSalle(loca) {
       //...
       xhr.open("GET",'page/EQUIPEMENTS/getlisteofsalle.php?lieu_sain='+loca, true);
       //...
    la page pour générer dynamiquement le select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    //...
    $query = "SELECT id_sain, libe_sain FROM ".$BDD['qoso'].".salles_informatiques WHERE lieu_sain = '".$_GET['lieu_sain']."'";
    //...
    ?>
    Quand je valide sous ie, ça fonctionne bien, je récupére bien mes $_POST mais pas sous FF !!??
    Là pour être franc je commence à être paumé... On parle de GET ou de POST ?

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Là pour être franc je commence à être paumé... On parle de GET ou de POST ?
    Il doit s'agir du formulaire ... dont le code n'est pas donné

    A+

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    merci pour vos réponses.

    Voici le form :

    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
    <form name="formulaire" action="equipements.php?pg=add" enctype="multipart/form-data" method="post" onsubmit="return checkForm();">
     
    ...
     
    <tr>
    <td bgcolor="#fffbd6">
    <div align="center">					<br />
    <table class="gris12" border="0" cellspacing="15" cellpadding="15" width="90%"  >
    <tr>
    <td width="160"><img src="images/fleche_grise.gif" height="10" width="14" border=0 valign="absmiddle" hspace=2><b>Domicilié</b></td>
    <td width="648">
    <div id="div_domicilie" style="display:block;">
    <select name="loca_mach" id="loca_mach" onchange="selectSalle(this)">
    <option value=""> -- Choix --  </option>
    <option value="E">Client Siége</option>
    </select>	
    </div>
    </td>	
    </tr>
    <tr>
    <td height="1" colspan=2 background="images/pointille.gif"><img src="images/spacer.gif" width="1" height="1" /></td>
    </tr>
    <tr>
    <td><img src="images/fleche_grise.gif" height="10" width="14" border=0 valign="absmiddle" hspace=2><b>Salle</b></td>
    <td>
    	<div id="div_salle">
    		<select name="sall_mach" id="sall_mach" onchange="js_update(this);">
    				<option value="">-- Choix --</option>
    	  </select>
    	</div>
    </td>
    </tr>
    <tr>
    <td height="1" colspan=2 background="images/pointille.gif"><img src="images/spacer.gif" width="1" height="1" /></td>
    </tr>
    <tr>
    <td><img alt="image" src="images/fleche_grise.gif" height="10" width="14" border=0 valign="absmiddle" hspace=2><b>Baie</b></td>
    <td>
    <div id="retour_ajax">
    <select name="baie_mach" id="baie_mach">
    		<option value="">-- Choix --</option>
    </select>
    </div>
    </td>
    </tr>
    </table>
    ...
     
    </form>
    en fait il y a du xhr en get pour dynamiser les select du form et ensuite c du post pour la valid de formulaire

  5. #5
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Il doit s'agir du formulaire ... dont le code n'est pas donné

    A+
    Citation Envoyé par syl2095 Voir le message
    en fait il y a du xhr en get pour dynamiser les select du form et ensuite c du post pour la valid de formulaire
    OK je saisis mieux ;-) Bon on va jeter un oeil à cette histoire ^^

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Rebonjour,

    Apparemment le innerHTML n'inclut pas des elements dans le DOM pour firefox.

    Donc les select n'étaient pas validés en $_POST...

    Voici une des solutions :

    la fonction js qui fait l'appel AJAX

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(xhr.readyState == 4 && xhr.status == 200)
    {
    eval(xhr.responseText);
    document.getElementById('sall_mach').options.length = 0;
    for (var i = 0; i < salles.length; ++i) document.getElementById('sall_mach').options[i]=new Option(salles[i].nom,salles[i].id);
    }
    et le 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
    ...
     
    $str = 'var salles = [{id:"",nom:" -- Choix -- "}, ';
     
    while ( $res = mysql_fetch_object($sql))
    {
    	$str.='{id:"'.$res->id_sain.'", nom:"';
    	$str.= $res->libe_sain.'"},';
    }
     
    if (substr($str, strlen($str)-1, strlen($str)) == ',') $str = substr($str, 0, -1);
    echo $str . ']';
     
    ...
    On envoie du json et on récupére en ajoutant dynamiquement des options au select

    Voilà voilà

    Merci à vous !

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

Discussions similaires

  1. InnerHTML et Firefox
    Par syl2095 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 06/05/2009, 19h38
  2. innerHTML avec firefox
    Par asmfc051 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/04/2009, 20h32
  3. [DOM] pb execution innerHTML sous firefox
    Par durthu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/09/2007, 11h55
  4. [DOM] innerHTML value input firefox
    Par Teufboy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/08/2007, 10h07
  5. InnerHTML avec Firefox
    Par Dankin dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/07/2007, 15h40

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