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] evenement JS par interprété par innerhtml


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [AJAX] evenement JS par interprété par innerhtml
    Bonjour à tous

    Voila depuis quelque jours je suis blocké sur un problème.
    j' ai utilisé le script du site http://siddh.developpez.com/articles/ajax/

    qui marche parfaitement, par contre, et voila mon problème je n'arrive pa à ajouter un événement JS avec "onchange" sur la liste déroulante générer dans le DIV...

    j' ai remarqué dans la source de la page même si le select s'affiche correctement une fois générer on ne retrouve pas les informations dans la source de la page (tjrs le div vide ).

    J' aimerais connaitre la manière de faire ou orienter mes recherches car je suis novice en AJAX et XMLHttpRequest et je désespère....


    merci

  2. #2
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Effectivement, en règle générale, les fonctions "Voir la source" des navigateurs montrent le code présent à l'ouverture de la page.
    Il existe des outils (web developper toolbar ou Firebug pour FF, debugbar pour IE) qui permettent de voir le code source actualisé.
    Pour ce qui est d'affecter un onchange, un peu de code serait utile !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut voila le code
    La fin du code de la page

    Code php : 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
    <form action="/Nipra_V1/fbt/facturation.php"  method="post" name="clientfact">
        <table width="903" border="0">
          <tr>
            <td colspan="2"  align="center"><p></p>
                <select name="clientsel" id="clientsel" onChange="verifclient2();">
                  <option>Selectionner un client déja référencé ou rentrez le manuellement ci-dessous</option>
                  <?php   
     
     
    		  $rs = " SELECT * FROM `client` ORDER by id ASC";
    $resu =  mysql_query($rs) ;
    while ($result = mysql_fetch_array($resu))
     
    {
    $idclient = $result["id"];
     $nomclient = $result["nomclient"];
     
      print "<option  value=".$idclient." >".$idclient."/".$nomclient."</option>"    ;  }   ?>
                </select>        </td>
          </tr>
          <tr>
            <td width="256">&nbsp;</td>
            <td width="637">&nbsp;</td>
          </tr>
          <tr>
            <td align="right"><strong>Raison Social/ Nom</strong></td>
            <td align="left"><input name="nomclient" type="text" id="nomclient" value="" size="50" onKeyUp="javascript:couleur(this);" />
                <input  type="hidden" value="" name="idclient" id="idclient"/></td>
          </tr>
          <tr>
            <td align="right"><strong>Adresse1</strong></td>
            <td align="left"><input name="adresse1" type="text" id="adresse1"  value=""size="40" onKeyUp="javascript:couleur(this);" /></td>
          </tr>
          <tr>
            <td align="right"><strong>Adresse2</strong></td>
            <td align="left"><input name="adresse2" type="text" id="adresse2" value="" size="40" /></td>
          </tr>
          <tr>
            <td align="right"><strong>Code postal</strong></td>
            <td align="left"><input type="text" name="codepost" id="codepost"  value=""  onChange="go();"/>
              <span id="listecode"   >
              <select  id="listecode2" name="listecode2" onChange="message();">
              <option>lol</option>
              <option>lol2</option>
              </select>
              </span>
                <input name="ville" type="text" id="ville"  value="" size="0" onKeyUp="javascript:couleur(this);" />        </td>
          </tr>
          <tr>
            <td align="right">&nbsp;</td>
            <td align="left">&nbsp;</td>
          </tr>
          <tr>
            <td colspan="2" align="center"><input type='button' value='Type de Paiment' onClick='test();'  ></td>
          </tr>
        </table>



    Une partie du javascript de la page

    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
    function message() {
           alert("hello")
       }
     
     
    			function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
    			/**
    			* 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;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('listecode').innerHTML = leselect;
     
     
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajaxlistecode.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id de l'auteur
     
    				idauteur = document.getElementById('codepost').value;
    				xhr.send("codepost="+idauteur);
    			}


    Page apelé par ajax : ajaxlistecode.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    	echo "<select  name='listecode2' id='listecode2' onChange = 'message();'  >";
    	if(isset($_POST["codepost"])){
    		mysql_connect("localhost","root","");
    		mysql_select_db("nipra");
    		$res = mysql_query("SELECT codepost,libelle,id FROM codepostal WHERE codepost LIKE '".$_POST["codepost"]."%'");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["id"]."'>".$row["codepost"]."/".$row["libelle"]."</option>";
    		}
    	}
    	echo "</select>";
    ?>


    tout marche très bien sauf l'événement Onchange ou n'importe quel événement dailleurs sur le select généré par ajax

    merci

  4. #4
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    onchange est un événement JavaScript, donc même placé en tant qu'attribut HTML, il n'est pas évalué par Ajax, il faut insérer le responseText dans la page, puis affecter la gestion des événements aux nouveaux éléments.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut merci
    Merci de ta réponse .

    Je vais essayer de combler mes lacunes car je ne comprend pas tout.

    A ce que j' ai lu en vitesse il faudrait utiliser quelque chose comme ça:

    addEventListener ??


    c' est tout nouveau pour moi faut le temps que je comprenne, je vais encore m'instruire.

    merci de m'avoir mis sur le bon chemin

  6. #6
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            leselect = xhr.responseText;
            document.getElementById('listecode').innerHTML = leselect;
            document.getElementById('listecode2').onchange = message; 
        }
    }
    Devrait suffire à priori.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut merci
    Merci pour cette technique , je ne savais pas qu'on pouvait affecter un evenement comme cela en javascript.

    Mais malheureusement ceci ne fonctionne pas, pourtant ça devrait marcher nickel... ça a l'air bon comme raisonnement.


    arf, je v tester encore on ne sais jamais

    merci quand même

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Résolu
    Finalement, j ai trouvé le problème , je suis trop un boulet mdr...

    Ta méthode fonctione parfaitement Merci
    Merci beaucoup vraiment

    Le problème etait trop trop bète , j'ose même pas l'écrire.......

    Je travaillais tout simplement pas sur la bon fichier......

    arf... quel boulet !!

    Merci à tous et surtout Bovino

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

Discussions similaires

  1. [MCD] Nombre d'heures travaillées par mois par année par compte
    Par Tidus159 dans le forum Schéma
    Réponses: 9
    Dernier message: 11/03/2011, 12h20
  2. page xml, et balises non interprétés par flash
    Par arnaudrou dans le forum Flash
    Réponses: 13
    Dernier message: 18/08/2006, 08h37
  3. pb d'interprétation par IE
    Par sly33 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 18/07/2006, 09h23
  4. [AJAX] Actualisation d'une page par AJAX
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/06/2006, 13h07
  5. Réponses: 4
    Dernier message: 29/06/2005, 11h40

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