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

AJAX Discussion :

[AJAX] Menu lié : de innerHTML


Sujet :

AJAX

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Par défaut [AJAX] Menu lié : de innerHTML
    Bonjour.

    Je pense que l'option innerHTML me pose problème.

    code tpl
    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
    {literal}
    	<script language='javascript'>
    function getXhr(){
    			var xhr = null;
    			if(window.XMLHttpRequest) 
    				xhr = new XMLHttpRequest();
    			else if(window.ActiveXObject){ 
    				try {
    						xhr = new ActiveXObject("Msxml2.XMLHTTP");
    					} catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
    			}
    			else { 
    				alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    				xhr = false;
    			}
    			return xhr
    		}
    function load_lstdysf(){
    			var val_ip = document.getElementById('ip_ordi').value;
    			var xhr = getXhr()
    			xhr.onreadystatechange = function(){
    				if(xhr.readyState == 4 && xhr.status == 200){
    					leselect = xhr.responseText;
    					document.getElementById('ip_ordi').innerHTML = leselect;
    				}
    			}
    			xhr.open("POST","load_dysfon.php",true);
    			xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    			xhr.send('dte_dysf='+escape(document.getElementById('dte_dysf').value)+'& type=load_lstdysf');				
    		}
    </script>
    {/literal}
    <form name="ordi_enr" action="inter_ajout.php" method="post" onsubmit="return verif_form();">
    <p align="center"><label for="dte_dysf">Surevenu le:</label>
    						<input name="dte_dysf" type="text" value="" size="10" maxlength="10" >
     
    						<label>IP : </label>
    						<select name="ip_ordi" onchange="put_lbdysfon(this.value)">
    								<option value="-1">Choisir une adresse ip</option>	
    						</select></form>
    le code php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    	header("Cache-Control: no-cache, must-revalidate");
    	header('Content-type: text/html; charset=iso-8859-1'); 
    	require_once('config.inc.php');
    echo "<select name='ip_ordi'>";
    			$res = mysql_query("SELECT ip_ordin FROM tb_ordinateur");
    			while($row = mysql_fetch_assoc($res)){
    				echo "<option value='".$row["ip_ordin"]."'>".$row["ip_ordin"]."</option>";
    			}
    		echo "</select>";
    En executant ce code il ne marche, alors pour tester ou se trouve le pb, je supprime la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('ip_ordi').innerHTML = leselect;
    et je la remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr.responseText);
    Alors il affiche les valeurs, je conclus que c'est innerHTML qui est soit mal utilisé, soit par à sa place.

    Merci de votre aide.

  2. #2
    Expert éminent

    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
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('ip_ordi').innerHTML
    Visiblement, c'est simplement que tu ajoutes ton <select id='ip_ordi'> dans ... le <select id='ip_ordi'>

    Dans ta fonction Ajax, il faut seulement que tu fasses références à l'élément qui contient le select, au lieu du select lui-même

    Quitte à créer un <div> contenant le select uniquement dans ce but, si d'autres éléments sont présent au même niveau.

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 20
    Par défaut leselect
    Je ne vois pas où est déclarée ta variable leselect qui doit être un String.

    C'est peut-être bien ça le problème.

    rudy.

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Par défaut
    Citation Envoyé par rudyhadoux2 Voir le message
    Je ne vois pas où est déclarée ta variable leselect qui doit être un String.

    C'est peut-être bien ça le problème.

    rudy.
    Bonsoir,

    Précisement à rudyhadoux2: je viens de déclarer leselect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var leselect = xhr.responseText;
    Le résultat est toujours le même.

    A E.Bzz: stp je n'ai rien compris de ton aide. Peux tu être assez précis ?
    Merci à chacun pour son aide.

  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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ce que veut dire E.Bzz c'est que ta requête AJAX te retourne un select :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "<select name='ip_ordi'>";
    			$res = mysql_query("SELECT ip_ordin FROM tb_ordinateur");
    			while($row = mysql_fetch_assoc($res)){
    				echo "<option value='".$row["ip_ordin"]."'>".$row["ip_ordin"]."</option>";
    			}
    		echo "</select>";
    Or tu fais ensuite un innerHTML sur un select, ce qui n'est pas autorisé en HTML

    Ceci dit, le problème essentiel vient bien du innerHTML car IE n'accepte pas de le faire sur une balise select : http://msdn.microsoft.com/fr-fr/libr...ml(VS.80).aspx
    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
    Expert éminent

    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
    Par défaut
    +1 Bovino

    D'où ma suggestion
    Citation Envoyé par E.Bzz Voir le message
    Dans ta fonction Ajax, il faut seulement que tu fasses références à l'élément qui contient le select, au lieu du select lui-même

    Quitte à créer un <div> contenant le select uniquement dans ce but, si d'autres éléments sont présent au même niveau.
    A+

  7. #7
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Par défaut
    Bonjour,

    j'ai résolu le pb autrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var leselect = xhr.responseText;
    					tabChaine=leselect.split('valeur');
    					var lb=tabChaine[0];
    					var val=tabChaine[1];
    					document.forms.ordi_enr.ip_ordi.options[document.forms.ordi_enr.ip_ordi.options.length] = new Option(lb,val);
    Merci

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

Discussions similaires

  1. [AJAX] Menu déroulant dynamique pour parcourir une BD
    Par relena dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 25/03/2007, 17h05
  2. [AJAX] Menu AJAX pour site PHP
    Par memel182 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/01/2007, 20h39
  3. [AJAX] Menu dynamique AJAX
    Par outlawz dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 04/07/2006, 15h13
  4. [AJAX] menu javascript et ajax
    Par gregius dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 22/06/2006, 12h02
  5. [TILES][Ajax] menu tiles + affichage Ajax
    Par Azanael dans le forum Struts 1
    Réponses: 3
    Dernier message: 23/05/2006, 16h27

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